要求:每次可以爬一阶或两阶
思路:本题明显可以回溯,也可以动规,区别在于动规存中间数组dp,数组dp还可以用三个变量代替
class Solution {
public:
int climbStairs(int n) {
//dp[i]表示到i阶有多少种,则dp[i]=dp[i-1]+dp[i-2]
int dp[n+1];
dp[1]=1;dp[0]=1;
for(int i=2;i<=n;++i)
dp[i]=dp[i-1]+dp[i-2];
return dp[n];
}
};