首页 > 其他 > 详细

322. Coin Change

时间:2018-04-27 12:46:47      阅读:191      评论:0      收藏:0      [点我收藏+]

技术分享图片

该题要使用动态规划,参考了链接:

https://blog.csdn.net/happyaaaaaaaaaaa/article/details/50976088

中的第二种方法,主要思路是用一个数组dp来存储硬币的数量,例如数组中第 i 个元素就保存达到目标金额为 i 的最少硬币数,凑齐钱数amount最少的硬币数为 固定钱数coins[j] 的一枚硬币,其余钱数为 amount - coins[j],那么数量为dp[amount-conis[j]]。

代码如下:

 

 1 class Solution {
 2     public int coinChange(int[] coins, int amount) {
 3         int[] dp = new int[amount + 1];  
 4         for (int i = 1; i <= amount; i++) dp[i] = 0x7fff_fffe;  
 5         for (int coin : coins)  
 6             for (int i = coin; i <= amount; i++)  
 7                 dp[i] = Math.min(dp[i], dp[i - coin] + 1);  
 8         return dp[amount] == 0x7fff_fffe ? -1 : dp[amount]; 
 9     }
10 }

 

 

END

322. Coin Change

原文:https://www.cnblogs.com/sssysukww/p/8961725.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!