传送门→

很经典的DP。设dp[i]为走到第i级台阶的总方案数,那么显然可以得到状态转移方程:
dp[i]=dp[i-1]+dp[i-2]。因为每一步能走一级或者两级台阶。

初始化dp[1]=1,dp[2]=2,然后跑循环就行了。

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