Ctrl K

Стереть зеркальными блоками

Сложная
Дан массив целых чисел values. За один ход можно выбрать непрерывный кусок массива, который читается одинаково слева направо и справа налево (например, [3], [2, 2] или [5, 1, 5]), и стереть его. После этого соседи стёртого куска сдвигаются и становятся рядом. Верните наименьшее число ходов, за которое можно стереть весь массив.
Пример 1
values=[2, 5, 7, 5, 3] → 3

Стираем [5, 7, 5] одним ходом, затем [2] и [3] — всего 3 хода.

Пример 2
values=[4, 1, 6, 1, 9, 4] → 2

Стираем [1, 6, 1], остаётся [4, 9, 4] — это стираем вторым ходом. Ответ 2.

Пример 3
values=[8, 3] → 2

Числа разные, каждое стираем отдельно.

Ограничения
  • 1 ≤ len(values) ≤ 100
  • 1 ≤ values[i] ≤ 20
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВода между стенами СложнаяСамый большой горящий блок СложнаяПрибыль за две сделки СложнаяВсе способы расставить пробелы СложнаяПереход через пещеру Сложная
загружаем Python…
Вход
values=[2, 5, 7, 5, 3]
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 101 тест на сервере, включая скрытые.