硬币找零动态规划算法.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
硬币找零动态规划算法

此处添加公司信息 硬币找零 动态规划 目录 * 问题描述 问题分析 问题解决 实验总结 问题描述 * 硬币找零问题描述:现存在一堆面值为 V1、V2、V3 … 个单位的硬币,问最少需要多少个硬币才能找出总值为 T 个单位的零钱?假设这一堆面值分别为 1、2、5、21、25 元,需要找出总值 T 为 63 元的零钱。 很明显,只要拿出 3 个 21 元的硬币就凑够了 63 元了。 对于这个问题,不妨采用贪心法 很明显,只要拿出25,25,5,5,2,1的硬币凑够了 63 元了。显然使用贪心法竟需要拿出6个硬币。 我们发现贪心算法不能求出最少的硬币数。因此我们需要再寻找另一种算法来求出最少的硬币数。 问题分析 * 对于此题,可以先举个简单的例子: 若有1,5,7,10这四种货币,则易知 1=1 2=1+1 3=1+1+1 4=1+1+1+1 5=0+5 6=5+1 …… 11=10+1 问题分析 * 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 1 2 1 2 3 1 2 D[12]min= Min (d[12-1],d[12-5],d[12-7],d[12-10]) +1 =2 面值i D[i] 最少货币数 那么对于任意的面值i来说, D[i]=min(D[i – a] )+1 (a∈{货币面值}且d[i – a] ≠0) {d[i]=0代表i无法用给定的货币表示} 问题分析 * 动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,并将这些子问题的解保存起来,如果以后在求解较大子问题的时候需要用到这些子问题的解(即原问题的解包含其子问题的解) ,就可以直接取出这些已经计算过的解而免去重复运算。保存子问题的解可以使用填表方式,例如保存在数组中。 问题解决 * 基于上述动态规划的思想,我们可以从 1 元开始计算出最少需要几个硬币,然后再求 2 元、3元…每一次求得的结果都保存在一个数组中,以后需要用到时则直接取出即可。那么我们什么时候需要这些子问题的解呢?如何体现出原问题的解包含其子问题的解呢? 其实,在我们从 1 元开始依次找零时,可以尝试一下当前要找零的面值(这里指 1 元)是否能够被分解成另一个已求解的面值的找零需要的硬币个数再加上这一堆硬币中的某个面值之和,如果这样分解之后最终的硬币数是最少的,那么问题就得到答案了。 问题解决 * 此处添加公司信息 面值i D[i] 最少货币数 D[63]min= Min (d[63-1],d[63-2],d[63-5],d[63-21],d[63-25]) +1 =3 问题解决 * : 结果 实验总结 * 在解决问题的过程中参考了书本里的内容,通过本题我对算法分析设计又有了进一步的了解,对动态规划算法有更多的认识。动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,并将这些子问题的解保存起来,如果以后在求解较大子问题的时候需要用到这些子问题的解(原问题的解包含其子问题的解),就可以直接取出这些已经计算过的解而免去重复运算。 感谢观映 此处添加公司信息 此处添加页眉信息 此处添加页脚信息 LOGO

文档评论(0)

yaocen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档