题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。
解题思想:相当于求整数n是怎么由1,2组成的。可以使用斐波那契数列来求得方案数。
代码如下:
class Solution {
public:
int climbStairs(int n) {
//斐波那契数列
vector<int> vec(n+1, 1);
for(int i=2; i<=n; i++)
vec[i] = vec[i-1] + vec[i-2];
return vec[n];
}
};
斐波那切数列:
例如:0,1,1,2,3,5,8