爬楼梯动态规划
假设你正在爬楼梯。需要 n
阶你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?、
class Solution {
public:
int climbStairs(int n) {
int p=0,q = 0,r =1;
for (int i = 1;i <= n; i++){
p = q;
q = r;
r = p+q;
}
return r;
}
};
可以理解为到达1层的只需1步,p记录的是前第二次的楼层的方法数,q记录到前一次的楼层的方法数,当p加2就能到达我们要的那一层,q加1也能到达。所以到达的楼层的目标数等于r=p+q。循环遍历,就是循环每个楼层。