image.png
    假如一次可以爬 1-m个台阶,问有多少种方法
    那么就变成完全背包问题,爬到楼顶就是填满了背包。同时这里是一个排列问题。

    1. var climbStairs = function(n) {
    2. const dp = new Array(n+1).fill(0);
    3. const weight = [1,2]; //改成m就可以做m个台阶问题了
    4. dp[0] = 1;
    5. for(let j = 0; j <= n; j++){ //先遍历背包
    6. for(let i = 0; i < weight.length; i++){ // 再遍历物品
    7. if(j >= weight[i]) dp[j] += dp[j-weight[i]];
    8. }
    9. }
    10. return dp[n];
    11. };