Skip to content
On this page

爬楼梯

TIP

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 12 个台阶。你有多少种不同的方法可以爬到楼顶呢?

思路

  • dp[i - 1],上i-1层楼梯,有dp[i - 1]种方法,那么再一步跳一个台阶不就是dp[i]了么。

  • dp[i - 2],上i-2层楼梯,有dp[i - 2]种方法,那么再一步跳两个台阶不就是dp[i]了么。

那么dp[i]就是 dp[i - 1]dp[i - 2]之和!

动规五部曲

  1. 确定dp数组以及下标的含义:i表示爬的总台阶数,dp[i]表示爬到i阶台阶一共有几种方法
  2. 确定递推公式:dp[i] = dp[i-1]+dp[i-2]
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组
js
var climbStairs = function(n) {
    let dp = []
    dp[1] = 1
    dp[2] = 2
    for(let i=3;i<=n;i++){
        dp[i] = dp[i-1]+dp[i-2]
    }
    return dp[n]
};

完全背包