版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
兑换硬币不同面额硬币,个数不限¥0.25、0.1、0.05、0.01兑换钱数¥0.63目标:用于兑换的硬币个数最少穷举所有可能性按面值从大到小选择硬币兑换0.63=2*0.25+1*0.1+3*0.01兑换硬币按面值从大到小选择硬币!选用的硬币面额越大,需要用于兑换的硬币个数就越少这就是贪心策略!硬币兑换的贪心算法//需兑换钱数=a;//可用硬币面额集合=d;while(兑换未完成){
选出当前可用的最大面额x;
用面额x执行兑换:使用数量=c、兑换金额=e;
累计硬币使用总量sum=sum+c;}每种面额只考察了一次,效率高!如何知道兑换未完成?硬币兑换的贪心算法//需兑换钱数=a;//可用硬币面额集合=d;while(剩余金额>0
){
选出当前可用的最大面额x;
用面额x执行兑换:使用数量=c、兑换金额=e;累计硬币使用总量sum=sum+c;
剩余金额=剩余金额-e;}剩余金额如何表示?面额集合如何表示?兑换量如何计算?兑换方案如何表示?兑换硬币的贪心算法实现输入:d[]:面额数组(值:大小),n:面额种数,a:需兑换金额输出:最少的兑换硬币个数intgreedyChange(intd[],intn,inta){inti=1;intsum=0;while(a>0){intc=a/d[i];//计算面额为d[i]的硬币兑换量(整除)sum=sum+c;//累计硬币使用总量
a=a–c*d[i];//计算剩余金额i=i+1;//考察下一面额}returnsum;//结果:用于兑换的硬币总数}每种硬币的具体兑换量?兑换硬币的贪心算法实现intgreedyChange(intd[],intn,inta){inti=1;intsum=0;while(a>0){intc=a/d[i];
a=a–c*d[i];
sum=sum+c;i=i+1;}returnsum;}d[]={25,10,5,1},a=631)i=1:a=63>0c=a/d[1]=2a=a–c*d[1]=13,sum=22)i=2:a=13>0c=a/d[2]=1a=a–c*d[2]=3,sum=33)i=3:a=3>0
c=a/d[3]=0,d[3]=5a=a–c*d[3]=3,sum=34)i=4:a=3>0c=a/d[4]=3a=a–c*d[4]=0,sum=65)i=5:a=0,算法终止兑换硬币贪心策略效率高每种面额只处理一次,无需考察不同的面额组合动态规划:系统考察所有组合有局限!面额:¥0.11,0.05,0.01,兑换:¥0.15还能使用贪心策略吗?贪心算法的基本思想总是作出在当前看来最好的选择在某种意义上的局部最优选择,不从整体最优考虑希望得到的最终结果整体最优单源最短路经问题,最小生成树问题等不一定总能得到整体最优解这时的结果是最优解的很好近似可行、较优解硬币兑换的动态规划算法动态规划对每种面额检查其选与不选的情况下,兑换是否最优!如何应用动态规划?回顾动态规划的步骤证明问题满足最优子结构性质定义与最优解相关的最优值推导最优值计算递归式根据计算递归式设计算法,计算最优值,同时保存最优解相关信息根据上一步得到的信息,构造最优解硬币兑换的动态规划算法动态规划的步骤证明问题满足最优子结构性质证明贪心算法正确性时,已经得证定义与最优解相关的最优值推导最优值计算递归式怎么做?提示:参照0-1背包的动态规划算法m(i,j)可选物品i,i+1,……,n,背包容量jc(i,j)可选面额d[i],d[i+1],……,d[n],需兑换金额j硬币兑换的动态规划算法假定面额数组:d[1]>d[2]>…>d[n]=1需兑换金额a最优值c(i,j)可选面额d[i],d[i+1],……,d[n],需兑换金额j1≤i≤n,0≤j≤a递归计算式当d[i]>j时,c(i,j)=c(i+1,j)当d[i]≤
j时,c(i,j)=min{c(i+1,j),j/d[i]+c(i,jmodd[i])}硬币兑换的动态规划算法dynamicChange(d[],n,a,c[][]){ for(j=0;j<=a;j++)c[n][j]=j;//初始化:面额d[n] for(i=n–1;j>=1;j--)//逐行向上for(j=0;j<=a;j++){if(d[i]>j)//面额d[i]超过金额jc[i][j]=c[i+1][j];else{if(c[i+1][j]<j/d[i]+c[i][j%d[i]])//不选面额d[i]更小c[i][j]=c[i+1][j];elsec[i][j]=j/d[i]+c[i][j%d[i]];//选面额d[i]更小}}}硬币兑换动态规划算法实例d[1]=11,d[2]=5,d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年特许经营合同:特许经营权持有者与加盟商之间的特许经营合同2篇
- 基于AI的2024年度电商客户忠诚度提升合同
- 简易产品分销合同范例
- 2024年度股权转让及增资合同:某科技公司的股权转让及增资协议2篇
- 2024年度项目合规与法规遵守合同2篇
- 签约兼职合同范例
- 简单的租车合同范本
- 船舶维修报价合同模板
- 围挡出售合同范例
- 试用期劳动合同范本标准版
- 医科大学2024年12月药品市场营销学作业考核试题答卷
- 形势与政策智慧树知到答案2024年黑龙江农业工程职业学院
- GB/T 2440-2017尿素
- 小学三年级下册音乐-1我们的田野-西师大版(11张)ppt课件
- 20米铁塔图纸
- 运输车辆司机安全技术操作规程
- 食品安全管理体系内审检查记录表
- 附件:1度新注册海归人才企业创业启动资金支持
- 如何正确处理同学之间的矛盾主题班会课件
- 轴类零件工艺工序卡片
- “国培计划”中小学教师培训经费预算表(集中培训项目) - jl
评论
0/150
提交评论