思路:动态规划。
第n阶台阶一定是通过第n-1或者第n-2阶爬上去的。所以我们通过dp算法,用dp[n-1]记录到达第n阶台阶的走法。分别赋值第一阶台阶的走法dp[0]=1.第二阶台阶的走法,dp[1]=2;所以第n+1阶台阶的走法dp[n]=dp[n-1]+dp[n-2]。最后返回dp[n-1]即可。
class Solution {
public:
int climbStairs(int n) {
if(n==0||n==1) return 1;
int dp[n];
dp[0]=1,dp[1]=2;
for(int i=2;i<n;++i)
dp[i]=dp[i-1]+dp[i-2];
return dp[n-1];
}
};