class Solution {
public int change(int amount, int[] coins) {
int[] dp = new int[amount + 1];
dp[0] = 1;
for(int i = 1; i < coins.length + 1;i++){
int coin = coins[i - 1];
for(int j = coin; j <= amount; j++){
dp[j] += dp[j - coin];
}
}
return dp[amount];
}
}
和01背包类似,这里无非就是物品可以重复选取,所以是从小到大求组合
该博客讨论了一种使用动态规划算法解决零钱兑换问题的方法。代码实现中,通过自底向上填充dp数组,计算在给定硬币类型下找到特定金额的所有组合数。这个过程类似于01背包问题,但允许硬币无限使用。
530

被折叠的 条评论
为什么被折叠?



