Динамическое программирование
2. Псевдодвумерное динамическое программирование
Псевдодвумерное динамическое программирование — это такой тип задач, в которых уже не достаточно одномерного массива для хранения результатов, а нужен двумерный массив, но при этом одна из его размерностей мала, например, равна двум. В таком случае бывает удобно не заводить двумерный массив, а завести два одномерных массива. Также в таких задачах, как правило, заполнение значений происходит в одномерном цикле.
Задача. Даны два целых числа и . Требуется найти количество последовательностей длины , которые состоят из цифр от до и в которых нет двух подряд идущих нулей.
Пусть — это количество последовательностей длины , которые заканчиваются на цифру , а — это количество последовательностей длины , которые заканчиваются не на цифру . Таким образом, мы имеем массив у которого вторая размерность равна двум.
Начинаем заполнение с последовательностей длины один:
Далее для всех значений можно записать формулы пересчёта: