LeetCode 70: Climbing Stairs [★☆☆☆☆]
假设你现在正在爬楼梯,楼梯有 n 级(1≤n≤50)。每次你只能爬 1级或者 2级,那么你有多少种方法爬到楼梯的顶部?
第一步,得到递推关系式:C[i] = C[i-1] + C[i-2],你会发现,这不就是斐波那契数列么,详见动态规划入门斐波那契数列
第二步,边界条件:C[0] = 0, C[1] = 1, C[2] = 2
第三步,编写代码
int climbingStairs(int n) {
if(n <= 2) return n;
int a = 1, b = 2, idx = 1;
while (idx != n) {
int c = a;
a = b;
b = c + b;
idx++;
}
return a;
}