给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。(提示:你可以认为每种硬币的数量是无限
时间: 2023-04-25 22:05:12 浏览: 88
最少币数计算法
的)
题目翻译:给定不同面额的硬币和一个总金额,求最少需要多少个硬币才能凑成总金额。如果无法凑成,返回-1。假设每种硬币数量无限。
解题思路:动态规划。定义一个数组dp,其中dp[i]表示凑成金额i所需的最少硬币数。初始化dp[0]=0,其余为正无穷。对于每个金额i,遍历硬币面额coins[j],如果coins[j]<=i,则dp[i]=min(dp[i],dp[i-coins[j]]+1)。最终返回dp[amount]即可。
代码如下:
阅读全文