Не нашел подобного вопроса по этому поводу. Это последний вопрос на 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.
Помогите, пожалуйста?
Скорее всего, это динамическое программирование, но я не знаю как.
Кольцо может быть любого размера.