假如一次可以爬 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];
};