码迷,mamicode.com
首页 > 其他好文 > 详细

动态规划初步

时间:2017-11-14 16:24:39      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:如何   es2017   .com   log   images   硬币问题   bsp   技术   应该   

凑钱问题:

题目:给一个总额amount,以及现有的钱币面值数组coins,要求计算最少需要多少张coins中的钱币才能凑出总额;

动态规划是将大问题转化为小问题,然后一步步求解出最终结果。具体到这道题,我们可以把大问题即凑amount元转化为凑齐amout-1,amount-2等等

技术分享

当我们计算"凑5元"的时候一定要相信:凑1-4元都已经是最优结果了,同样凑4元要相信凑1-3是最优结果。这便是动态规划的全部:大问题转化为小问题,每次小问题都是最优结果,最终基于这些小问题得到大问题的最优结果,各种dp问题的主要不同是大问题是如何“基于小问题”得出结果的

回到上面的图片中,我们这道题目要求的是计算凑amount所需最少的钱币张数,那凑X元储存的就应该是钱币的张数,所以上面的图片进一步转化

技术分享

当我们凑5元的时候,由于有3中面值可选,我们不确定选哪个是最佳,所以需要遍历一次。当选面值1RMB时,需要借助子问题凑4元的答案;当选面值2RMB时,需要借助子问题凑3元;选面值3RMB需要借助子问题凑2元,如此得出三个答案(A,B,C),最终计算着三个答案哪个是最优结果,即哪个所需张数最少,并将至存放到dp[5]作为凑5元的最优结果,以上便是动态规划在凑硬币问题上的应用,其实既然都叫思想了很明显凡是大问题依赖小问题解的都可以使用dp求出。

 

动态规划初步

标签:如何   es2017   .com   log   images   硬币问题   bsp   技术   应该   

原文地址:http://www.cnblogs.com/racaljk/p/7832885.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!