Предлагаю потренироваться решать задачи на динамическое программирование на одной из классических задач. Читаем условие: Как определить, что задача на динамическое программирование? Кроме того, что на сайте указан раздел, из которого задача, метод динамического программирования чаще всего помогает отвечать на вопросы "сколько способов?" и "какой способ оптимальный?". Да, есть ещё варианты, например, зная количество способов и первое число в "решении" можно найти k-ое по счёту решение. Итак, в этой задаче как раз надо посчитать количество способов подняться на лестницу. При решении методом динамического программирования надо определить три вещи: что является состоянием, переходы между состояниями и база динамики. Состояние - это параметры, которыми характеризуется подзадача. Это может быть: Чаще всего состояние можно понять из условия задачи. И лишь иногда к тому, что дано приходится добавлять дополнительный параметр. В нашем случае надо найти количество способов добраться до ступеньки