本文主要是介绍518.零钱兑换Ⅱ,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给你一个整数数组 coins
表示不同面额的硬币,另给一个整数 amount
表示总金额。
请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0
。
假设每一种面额的硬币有无限个。
题目数据保证结果符合 32 位带符号整数。
class Solution{public int change(int amount, int[] coins){// 从coins可以重复取出,和为amount的int[] dp = new int[amount + 1];dp[0] = 1;// 遍历每个物体,中每个物体遍历所有容量for(int i = 0; i < coins.length; i++){for(int j = coins[i]; j <= amount; j++){dp[j] += dp[j - coins[i]];// dp[j] = Math.max(dp[j], dp[j - coins[i]] + 1);}}return dp[amount];}
}
public int change(int amount, int[] coins){// amount容量int[] dp = new int[amount + 1];dp[0] = 1;for(int i = 0; i < coins.length; i++){for(int j = coins[i]; j <= amount; j++){dp[j] += dp[j - coins[i]];}}return dp[amount];
}
这篇关于518.零钱兑换Ⅱ的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!