动态规划系列(3)——爬楼梯

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;
}

 

你可能感兴趣的:(数据结构与算法,动态规划)