代码随想录算法训练营第三十七天| 518. 零钱兑换 II 、 377. 组合总和 Ⅳ 、70. 爬楼梯 (进阶)

13 阅读1分钟

### 完全背包

相关链接:文章讲解 视频讲解

解题思路

518. 零钱兑换 II

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var change = function(amount, coins) {
    var dp = new Array(amount+1).fill(0);
    dp[0] = 1;
    //先遍历物品,再遍历背包,是组合数 {1,2} 
    for(let i =0;i<coins.length;i++){
        for(let j=coins[i];j<=amount;j++){
            dp[j] += dp[j-coins[i]];
        }
    }
    console.log(dp)
    return dp[amount]
};

377. 组合总和 Ⅳ

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var combinationSum4 = function(nums, target) {
    var dp = new Array(target+1).fill(0);
    dp[0]=1;
    //先遍历背包,再遍历物品,是排列数 {1,2} {2,1}
     for(let j= 0;j<=target;j++){
         for(let i=0;i<nums.length;i++){
            if(j>=nums[i]){
                dp[j] += dp[j-nums[i]];
            }
           
        }
    }
    console.log(dp);
    return dp[target]
};

70. 爬楼梯 (进阶)

相关链接:文章讲解

解题思路

代码实现