(注意,这里的数据范围为【1,45】)
1、用递推做,由于,走到第n个台阶要么是从n-1台阶爬一阶上来的,要么是从n-2台阶爬两阶上来的。所以可以得到递推式,f[n]=f[n-1]+f[n-2],其实这也是这种做法的状态转移方程。
class Solution {
public:
int climbStairs(int n) {
vector<int> cnt(n+1,0);
cnt[0]=cnt[1]=1;
for(int i=2;i<=n;++i)
{
cnt[i]=cnt[i-1]+cnt[i-2];
}
return cnt[n];
}
};