力扣70.爬楼梯
题目:
假设你正在爬楼梯。需要 n
阶你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
思路:
本题属于斐波那契数列,思路如下:
// 1阶: 1种方法
// 2阶: 2种
// 3阶: 3种
// 4阶: 5种
// 5阶: 8种
// 你会发现一个规律,当前的n阶等于n-1和n-2的台阶方法数的总和
// 也就是f(n)=f(n-1)+f(n-2),这样把规律找出后,就可以编写了
p q r
0 0 1
0 1 1
1 1 2
1 2 3
2 3 5
class Solution {
public:int climbStairs(int n) {int p=0,q=0,r=1;//p和q就代表着n-1和n-2,一开始初始化为0for(int i=1;i<=n;i++){p=q;q=r;r=p+q;}return r;// 1阶:1// 2阶:2// 3阶:3// 4阶:5// 5阶:8// 你会发现一个规律,当前的n等于n-1和n-2的台阶方法数的总和// 也就是f(n)=f(n-1)+f(n-2),这样把规律找出后,就可以编写了}
};