《算法设计与分析》实验三-实验报告电子版.docVIP

《算法设计与分析》实验三-实验报告电子版.doc

  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文档。上传文档
查看更多
《算法设计与分析》实验三-实验报告电子版

学 号 1421050102 《算法设计与分析》 实验报告三 学生姓名 Cherish 专业、班级 指导教师 唐国峰 成绩 计算机与信息工程学院软件工程系 2017 年 4 月 11 日 实验三:贪心算法运用练习 一、实验目的 本次实验是针对贪心算法运用的算法设计及应用练习,旨在加深学生对该部分知识点的理解,提高学生运用该部分知识解决问题的能力。 二、实验步骤与要求 1.实验前复习课程所学知识以及阅读和理解指定的课外阅读材料; 2.学生独自完成实验指定内容; 3.实验结束后,用统一的实验报告模板编写实验报告。 4.提交说明: (1)电子版提交说明: a 需要提交Winrar压缩包,文件名为“《算法设计与分析》实验三_学号_姓名”, 如“《算法设计与分析》实验三张三”。 b 压缩包内为一个“《算法设计与分析》实验三_学号_姓名”命名的顶层文件夹, 其下为两个文件夹,一个文件夹命名为“源程序”,另一个文件夹命名为“实验 报告电子版”。其下分别放置对应实验成果物。 (2)打印版提交说明: a 不可随意更改模板样式。 b 字体:中文为宋体,大小为10号字,英文为Time New Roman,大小为10号 字。 c 行间距:单倍行距。 (3)提交截止时间:2017年4月25日16:00。 实验项目 1.传统的找零钱问题的算法及程序实现(基于人民币)。 2.特殊的0-1背包问题的求解:本次求解的0-1背包问题的特点为每种物品各有M件,已知每个物品的单位价值,求使得所获价值最大的装包方案。 3.设有n个正整数,将它们连接成一排,组成一个最大的多位整数。例如:n=4时,4个整数7,13,4,246,连成的最大整数为7424613。 对每个数依次进行10^n的取整,直到某一n值取整结果为0,则返回对10^(n-1)取整的结果, 4.均分纸牌问题:有N堆纸牌,编号分别为1,2,…,n。每堆上有若干张,但纸牌总数必为n的倍数.可以在任一堆上取若干张纸牌,然后移动。移牌的规则为:在编号为1上取的纸牌,只能移到编号为2的堆上;在编号为n的堆上取的纸牌,只能移到编号为n-1的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。例如:n=4,4堆纸牌分别为:① 9 ② 8 ③ 17 ④ 6 移动三次可以达到目的:从③取4张牌放到④ 再从③区3张放到②然后从②去1张放到①。 5.数列极差问题:在黑板上写了N个正整数做成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的max,最小的为min,则该数列的极差定义为M=max-min。编程任务:对于给定的数列,编程计算出极差M。 先排序 最大值是由最小的往上叠加剩下的最后一个 最小值是由最大的往下叠加剩下的最后一个 四、实验过程 (一)题目一:传统的找零钱问题的算法及程序实现(基于人民币)。 题目分析 贪心算法是做出在当前看来是最好的选择,并不从整体最优上加以考虑。而本题找零钱也是整体最优的。 算法构造 零钱既有整型又有浮点型对于赋值过于麻烦,先将它们统一乘10,都为整型。内部处理也将找的零钱乘10倍,用10倍后找的零钱的分别对10倍后的不同面额取整,记得不同面额应找的数目。 算法实现 //程序在Visual Studio 2010环境下编写;#includestdio.h #includestdlib.h float in;//收顾客钱数 float consume;//顾客消费钱数 float outmoney;//应找顾客钱数 void out(int n) { int a[7]={500,200,100,50,10,5,1};//将市面上常用零钱面额统一扩大10倍 int b[7];//用于存储找的零钱各面值的个数 for(int i=0;i7;i++) { int j=a[i]; if(n/j0) continue; else b[i]=n/j; n=n-(n/j)*j; } printf(50元\t20元\t10元\t5元\t1元\t5角\t1角\n); for(int i=0;i7;i++) { printf(%d个\t,b[i]); } printf(\n); } void main() { printf(请输入顾客给的钱数:\n); scanf_s(%f,in); printf(请输入顾客消

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档