分析计算时候发现就是 斐波那契数列 ;
每次只能爬1步或2步,爬到第n层的方法要么是从第n-1层1步上来的,要不就是从n-2层2步上来的。
递归:【超时】
int climbStairs(int n) {
if (n < 0)
return 0;
if (n == 1 | n == 0)
return 1;
int steps = 0;
steps = climbStairs(n-1) + climbStairs(n-2);
return steps;
}
动态规划 :
int climbStairs(int n) {
if (n <= 0)
return 0;
if (n == 1)
return 1;
vector<int> vec(n+1);
vec[0] = 1;
vec[1] = 1;
for (int i = 2; i <= n; ++i)
{
vec[i] = vec[i-1] + vec[i-2];
}
return vec[n];
}