Интервью на Facebook: узнайте порядок, в котором дается максимальная сумма, выбрав поля с номером в кольце, когда два рядом с ним будут уничтожены

Не нашел подобного вопроса по этому поводу. Это последний вопрос на 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.

Помогите, пожалуйста?

Скорее всего, это динамическое программирование, но я не знаю как.

Кольцо может быть любого размера.

10
задан webE 28 October 2011 в 22:58
поделиться