Написано: 19.03.2023

70. Подъем по лестнице (Climbing Stairs)

easy

Задание.

Вы поднимаетесь по лестнице. Чтобы достичь вершины, требуется n шагов.

Каждый раз вы можете подняться либо на 1, либо на 2 ступеньки. Сколькими различными способами вы можете взобраться на вершину?

Пример 1.

Входные данные: n = 2

Результат: 2

Пояснение:

Есть два способа подняться на вершину.
1. 1 ступенька + 1 ступенька
2. 2 ступеньки

Пример 2.

Входные данные: n = 3

Результат: 3

Описание:

Есть три пути к восхождению на вершину.
1. 1 ступенька + 1 ступенька + 1 ступенька
2. 1 ступенька + 2 ступенька
3. 2 ступенька + 1 ступенька

Решение.

class Solution {
public:
    int climbStairs(int n) {
       int dp[n+1];
       dp[0]=1,dp[1]=1;
       for(int i=2;i<=n;i++){
           dp[i]=dp[i-1]+dp[i-2];
       } 
       return dp[n];
    }
};

Способ решения.

Задача решается методом динамического программирования.

Метод динамического программирования заключается в следующем:

  1. Разделить проблему.

  2. Найти решение на каждом этапе.

  3. Сохранить результат для последующего использования.