LeetCode-518.零钱兑换II
创始人
2025-05-29 04:54:51
0

目录

    • 题目分析
    • 回溯法
    • 动态规划
    • 动态规划(压缩)

题目来源
518.零钱兑换II

题目分析

1.转换成背包问题,由于每一种面额的金币可以选择多次,所以是完全背包问题。
2.题目要求我们求组合,而不是排列

回溯法

class Solution {int ans;public int change(int amount, int[] coins) {if(coins.length == 0){return 0;}backtracking(coins,0,0,amount);return ans;}private void backtracking(int[] coins,int startIndex,int sum,int amount){if(sum == amount){ans++;return;}if(sum>amount){return;}for(int i =startIndex;isum+=coins[i];backtracking(coins,i,sum,amount);sum-=coins[i];}}
}

在这里插入图片描述

动态规划

这道题和0-1背包的问题不一样了,是可以多选(看下面的图就懂了)
dp[i][j - coins[i - 1]]而不是0-1背包之前的 dp[i-1][j - coins[i - 1]]
还有要多留一行,在0-1背包直接是nums[0]就开始了

class Solution {public int change(int amount, int[] coins) {int n = coins.length;int[][] dp = new int[n + 1][amount + 1];for (int i=0;i<=n;i++) {dp[i][0] = 1;}for (int i=1;i<=n;i++) {for (int j=1;j<=amount;j++) {if (j < coins[i - 1]) {dp[i][j] = dp[i - 1][j];} else {dp[i][j] = dp[i - 1][j] + dp[i][j - coins[i - 1]];}}}return dp[n][amount];}}

在这里插入图片描述
在这里插入图片描述

动态规划(压缩)

  • 1.确定dp数组以及下标的含义

dp[j]:凑成总金额j的货币组合数为dp[j]

  • 2.确定递推公式

dp[j] 就是所有的dp[j - coins[i]](考虑coins[i]的情况)相加。
所以递推公式:dp[j] += dp[j - coins[i]];也可以理解为dp[j] = dp[j]+dp[j - coins[i]];

  • 3.dp数组如何初始化

首先dp[0]一定要为1,dp[0] = 1是 递归公式的基础。如果dp[0] = 0 的话,后面所有推导出来的值都是0了。
如果正好选了coins[i]后,也就是j-coins[i] == 0的情况表示这个硬币刚好能选,此时dp[0]为1表示只选coins[i]存在这样的一种选法。

  • 4.确定遍历顺序

因为是组合
外层for循环遍历物品(钱币),内层for遍历背包(金钱总额)

  • 5.举例推导dp数组

在这里插入图片描述

class Solution {public int change(int amount, int[] coins) {if(coins == null || coins.length<1){return 0;}int[] dp = new int[amount+1];dp[0] = 1;for(int i = 0;ifor(int j = coins[i];j<=amount;j++){dp[j] = dp[j] + dp[j-coins[i]];}}return dp[amount];}}

在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...