这题是简单的动态规划问题
class Solution {
public:
int climbStairs(int n) {
//动态规划 s[n]=s[n-1]+s[n-2]
if(n<=2) return n;
int s[n]={0},i=2;
s[0]=1;
s[1]=2;
while(i<n){
s[i]=s[i-1]+s[i-2]; //分析出这一步是关键
i++;
}
return n==0?0:s[n-1];
}
};
//递归的方法超时。。。
/*
class Solution {
public:
int climbStairs(int n) {
//先写终止条件
if(n==0||n==1) return 1;
int i=climbStairs(n-1);
int j=climbStairs(n-2);
return i+j;
}
};
*/