规则简述:给定一个正整数n表示楼梯总台阶数,你一次可以走1或者2,设计算法求解走上n个台阶的不同走法。
EX:n=3
output: 3
1. 1+1+1
2. 1+2
3. 2+1
斐波那契求解:
class Solution
{
public:
int climbStairs(int n)
{
vector<int> feb(n+1,0);
if(n==0)
return 0;
if(n==1)
return 1;
feb[0]=1;
feb[1]=1;
for(int i=2;i<=n;i++)
feb[i]=feb[i-1]+feb[i-2];
return feb[n];
}
};
核心思想:
F(n)=F(n-1)+F(n-2)
对于不同的n,方法数构成数列恰好为斐波那契数列。