- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算发设计与分析实验报告.doc
算法设计与分析实验报+
系別:信息技术系
班级:计科***班
学号:
姓名:**
实验三 贪心算法的应用
一、实验目的
掌握贪心算法的基本概念和两个基本要素
熟练掌握贪心算法解决问题的基本步骤。
学会利用贪心算法解决实际问题。
二、实验内容
1 ?问题描述:
题目一:找钱问题
一个顾客买了价值x元的商品(不考虑角、分),并将y元的钱交给售货员。 售货员希望用张数最少的钱币找给顾客。
要求:键盘输入x与y
输出找钱总数,各种钱币的张数,若张数为0不必输出。
输入输出实例:
题目二:删数问题
键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原 左右次序将组成一个新的正整数。编程对给定的N和S,寻找一种方案使得剩下 的数字组成的新数最小。
输出应包括所去掉的数字的位置和组成的新的正整数(N不超过100位)o 要求:键盘输入正整数N与删除位数s
输出删除后的最小新数以及删除的位数
输入输出实例:
题目三:分数表示问题
设计一个算法,把一个真分数表示为最少埃及分数Z和的形式。所谓埃及分
数是指分子为1的分数。如7/8二1/2+1/3+1/24。
2?数据输入:个人设定,由键盘输入。
3 ?要求:
1)上述题目学号为单号的做题目一和三,双号做题目二。上机前,
完成程序代码的编写
2)独立完成实验及实验报告
三、算法设计
题目二:删数问题
经分析,算法主要由四部分组成:初始化、相邻数字比较(必要吋删除)、处
理比较过程中删除不够s位的情况和结果输岀。
算法设计1:
一种简单的控制相邻数字比较的方法是每次从头开始,最多删除S次,也就
从头比较S次。按题目要求设置数组data记录删除的数字所在位置。
delete(char n[],int b,int k)
{int i;
for(i=b;i= length(n卜 k;i=i+l)
n[i]=n[i+k];
}
main ()
{char n[100]; int s,i,j,jl,c,data[100]Jen;
in put(n); input(s); len二length(n);
if(slen)
{print(data error); return;}
jl=0;
for (i=l;i=s ;i=i+l)// i控制删除字符的个数
{for (j=O;jlength(n);j=j+l) //j控制相邻比较操作的下标 if(n[j]n[j+l])// 贪婪选择
{delete(n,j,l);
if (jjl) data[i]=j+i;//记录删除数字位置
else data[i]=data[i-l]-l; //实例2向前删除的情况 jl=j; break; }
if( jlength(n)) break;}
for (i=i;i=s;i=i+l)
{j=len-i+l;delete(n,j,l); data[i]=j;}
while (n[0]=0 and length(n) 1) delete(n,0,l); 〃将字符串首的若干个“0”去掉
print(n);
for (i=l;i=s;i=i+l) print(data[i]/ );
}
算法设计2:
删除字符的方式同算法1,只是删除字符后不再从头开始比较,而是向前退
一位进行比较,这样设计的算法2的效率较算法1要高一些。deleteO?数同前。
变量i控制删除字符的个数,变量j控制相邻比较操作的下标,当删除了第
j个字符后,j赋值为j?l,以保证出现的特殊情况得到正确处理。
main(){
char n [100];
int s,ij,jl,data[100],len;
input(n); input(s); len 二 length(n); if(slen){
print(data error); return;
}
i=0; j=l; jl=0;
while(is and j=length(n)?l){ while(n[j]=n[j+l]) j=j+l; if (jlength(n)){
delete(nj,l);
if (jjl) data[i]=j+i; else data[i]=data[i-l]-l; i=i+l; jl=j;j=j-l;
}
}
delete(char n,int b,int k){
int i;
for(i=b;i= len gth (n)?k;i 二 i+1) n[i]=n[i+k];
}
for (i=i;i=s;i=i+l){
j=le n?i+l; delete(nj,l); data[i ]=j;
}
while (n[l]二‘0’ and length(n) 1) delete(n,l,l);
print(n);
for (i=l;i=s;i=i+l) print(data[i]
您可能关注的文档
最近下载
- 恢复执行信息登记表 (恢复强制执行申请书必备2).docx VIP
- 新版2025年《法治宣传教育法》班会.ppt
- 3.7 秋季星空(教学课件)六年级科学上册(青岛版).ppt
- 2023年机械制造行业技能考试-镗工考试考试历年重点考核试题含答案.docx VIP
- 2024-2030全球桌上角色扮演游戏(跑团)行业调研及趋势分析报告.docx
- 《旅游策划》课程标准.pdf VIP
- 2.1.2 有理数的减法(第1课时 有理数的减法法则)(教学设计) 七年级数学上册 (人教版2024).pdf
- 电机星三角启动PPT课件.pptx VIP
- 某污水站地基沉降注浆加固方案说明.doc VIP
- 3.《灭绝的生物》教学课件 青岛版科学六年级上册.pptx
文档评论(0)