Не нашел подобного вопроса. Это заключительный круглый вопрос Facebook:
Вам дается кольцо ящиков. Каждый ящик имеет неотрицательный номер на нем, может быть дублирован.
Напишите функцию/алгоритм, который сообщит вам порядок, в котором вы выбираете поля, которые дадут вам максимальную сумму.
Ловушка, если вы выберете поле, снимается с кольца, а также два рядом с ним (справа и слева от выбранного вами).
так что, если у меня есть кольцо {10 3 8 12}
Если я выберу 12, 8 и 10 будет уничтожен, а вы останетесь с 3.
Макс будет выбирать 8 сначала, а затем 10 или 10, затем 8.
Я попробовал повторно назначить поля своим значениям, взяв их собственное значение, а затем вычитает два из них, как стоимость.
Итак, старое кольцо {10 3 8 12}
новое кольцо {-5, -15, -7, -6}, и я выберу наивысшее.
Однако это определенно не работает, если у вас есть {10, 19, 10, 0}, вы должны взять два 10, но алгоритм будет принимать значения 19 и 0.
Помогите пожалуйста?
Скорее всего, это динамическое программирование, но я не знаю, как это сделать.
Кольцо может быть любого размера.