Есть 10 воздушных шаров, и каждый воздушный шар имеет на нем какую-то точку. Если клиент стреляет в воздушный шар, он получит очки, равные точкам на левом шаре, умноженному на очки на правом шаре. Клиент должен собрать максимум очков, чтобы выиграть эту игру. Какими будут максимальные баллы и в каком порядке он должен стрелять воздушными шарами, чтобы получить максимальные очки?Стрелять воздушными шарами и собирать максимальные очки
Обратите внимание, что если есть только один воздушный шар, вы возвращаете точки на этом воздушном шаре.
Я пытаюсь проверить все 10! перестановки, чтобы узнать максимальные точки. Есть ли другой способ эффективно решить эту проблему?
Что делать, если он стреляет в крайний левый или правый шар? 0 баллов? – Henry
Если он стреляет в любой воздушный шар слева или справа, то 1 точка будет умножена налево или вправо на него – Bhuwan
Я думаю, что это можно решить с помощью динамического программирования с битовой маской. – uSeemSurprised