
假如一次可以爬 1-m个台阶,问有多少种方法
那么就变成完全背包问题,爬到楼顶就是填满了背包。同时这里是一个排列问题。
var climbStairs = function(n) {const dp = new Array(n+1).fill(0);const weight = [1,2]; //改成m就可以做m个台阶问题了dp[0] = 1;for(let j = 0; j <= n; j++){ //先遍历背包for(let i = 0; i < weight.length; i++){ // 再遍历物品if(j >= weight[i]) dp[j] += dp[j-weight[i]];}}return dp[n];};
