题意
在每个台阶能走一步或两步,问到达第n个台阶能有多少种方式。
题解
和斐波那契序列一样,递归式为f(n) = f(n - 1) + f(n - 2),使用动态规划从底向上求解。
代码
class Solution {
public:
int climbStairs(int n) {
int dp[n + 1];
dp[0] = dp[1] = 1;
for(int i = 2; i <= n; i++)
{
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
};