You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
爬台阶,你每次可以上一层或者两层,问上n层你共有多少何种方法
f(n)=f(n-1)+f(n-2)
动规,记得保存n-1和n-2的结果,直接使用递归会超时
AC代码
class Solution {
public:
int climbStairs(int n) {
int count[n+1];
count[0]=0;
count[1]=1;
count[2]=2;
if(n==1)
return 1;
if(n==2)
return 2;
for(int i=3;i<=n;++i)
count[i]=count[i-1]+count[i-2];
return count[n];
}
};
其他Leetcode题目AC代码:https://github.com/PoughER/leetcode