下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
曲美邦尊大牵《算法设计与分析》上机实验报告专业软件工程班级软件1101学号04113033同学姓名岳彦利完成日期2022^11-26.上机题目及试验环境上机题目:最优分解问题试验环境:CPU:英特尔其次代酷睿i3-2330M@2.2GHz双核内存:4G操作系统:windows7软件平台:ubuntu.算法设计与分析.对于n<=4,可以验证其分解成几个正整数的和的乘积是小于n的。.对于n>4,能证明其能分解成几个数的和使得乘积不小于n。假如分解成1和n-1,那么对乘积是没有关心的,因此,假设n分解成a和n-a,2〈二a<二n-2.假如a,n-a仍旧>4,那么连续分解,直至a,n-a<=4。由于每次分解都能使乘积增加,所以最优解必是最终分解结果,也即分解出的数全是2或3..若1作因数,则明显乘积不会最大。把m分拆成若干个互不相等的自然数的和,因数个数越多,乘积越大。为了使因数个数尽可能地多,我们把m分成2+3…+n直到和大于等于m。若和比m大1,则因数个数至少削减1个,为了使乘积最大,应去掉最小的2,并将最终一个数(最大)加上1。若和比m大k(k^l),则去掉等于k的那个数,便可使乘积最大。.核心代码intBestDecomepose(int*a)〃求自然乘机的最大和(inti,j;intd,r=l,sum=0;for(i=2;;i++)(sum+=i;d=(sum-*a);if(d>=0)break;)printf("组成最大成果的自然数分别是:\\);if(d==l)for(j=3;j<i;j++)printf(*%d",j);)++i;printf(飞d\n",i);r*=i;}else{for(j=2;j<=i;j++)(if(j==d)〃假如j和d相等,就不执行continue下面的语句了continue;r*=j;printf(*%d",j);)printfC\n*);)returnr;).运行与调试yyl@ubuntu:-S./415Inputl.txt:组成最大成绩的自然数分别是:4outputl.txt:yylgubuntu:-S./415Inputl.txt:23组成最大成绩的自然数分别是:8图•.写程序时遇到的问题yyieubuntu:-$./4_15Inputl.txt:23组成最大成绩的自然数分别是:23567outputl.txt:1266yyl@ubuntu:-S./415Inputl.txt:11组成最大成绩的自然数分别是:245outputl.txt:40yylgubuntu:-S./415Inputl.txt:14组成最大成绩的自然数分别是:2345outputl.txt:126图二.大于4的三中状况截图yyleubuntu:-S./415Inputl.txt:2outputl.txt:图三.小于等于4的其中一种状况截图.结果分析和小结如图一,是在写程序时,在大于4的时候里面的循环写错了,经过调试修改,输出正确,如图二和三。如图二,是大于4的测试数据。在input.txt第一行中第一个数代表输入的数,其次行数代表组成这个数的最大成果的个数。这三组测试数都是自由生成的。如图三,是另一组小于或等于4的其中一种测试结果。(2)本次上机试验的收获、心得体会。这次的上机试验,使我对贪心算法法有了肯定的熟悉,编程的时候也有了更多的思路,在编程之前肯定把思路清楚,这样写的时候就比较轻松了。以前对这种数学问题不是很在意,现在觉得学这门课还得多看看数学这方面的学问,从而能更好的学好这门课。附录(C/C++源代码)#include<stdio.h>#include<stdlib.h>#include<fcntl.h>#include<math.h>#include<time.h>intBestDecomepose(int*a)〃求自然乘机的最大和inti,j;intd,r=l,sum=O;for(i=2;;i++)(sum+=i;d=(sum-*a);if(d>=0)break;)printf("组成最大成果的自然数分别是:\n〃);if(d==l){for(j=3;j<i;j++)(r*=j;printf(*%d",j);)++i;printf(*%d\n”,i);r*=i;)else{for(j=2;j<=i;j++)(if(j==d)〃假如j和d相等,就不执行continue下面的语句了continue;r*=j;printf(^%d”,j);)printfreturnr;(main()FILE*fp,*fpl;inta,max;fp二fopen("inputl.txt","wt");〃将随机数写入文件if(fp==NULL)(printf(^Conotopenthefile!”);exit(0);)srand((int)time(0));//避开和上次取得数相同a=l+(int)(25.0*rand0/(RANDMAX+1.0));〃取随机数fprintf(fp,"%d”,a);printf(^Inputl.txt:\nz,);printf(螺d\n",a);fclose(fp);if(a〉4)〃当输入的数大于4的状况{max=BestDecomepose(&a);fpl=fopen("output1.txt〃,〃wt〃);//将大于4的结果写入文件if(fpl=NULL)(printf(z,Conotopenthefile!");exit(0);)fprintf(fpl,*%d*,max);fclose(fpl);)elsefpl=fopenroutputl.txt",;〃将小于等于4的结果写入文件if(fpl==NULL)printf('Xonotopenthefile!");exit(0);)fprintf(fpl,"%d”,a-1);fclose(fpl);}printf(^outputl.txt:\n");〃输出文件里的类容fpl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安卓课程设计微信
- 养猪基础培训课程设计
- 大班课程设计手指创意画
- 体检中心预约系统操作考核试卷
- 农田水利自动化控制系统考核试卷
- 原动设备状态监测与预测性维护考核试卷
- 便利店商圈分析与竞争策略考核试卷
- 2024吉林省安全员考试题库附答案
- 《基于平衡计分卡的J银行Y分行绩效考核指标体系优化研究》
- 《光催化剂的制备与有机物降解机理关系研究》
- 设计是现代社会的重要组成部分
- 江苏省乡村振兴职业技能大赛技术工作文件〔中式烹调师(羊肉烘烤)〕
- 师带徒操作手册(共16页)
- 50000吨仓储配套500吨烘干塔项目可行性研究报告(DOC 58页)
- 石化工程设计施工标准
- T_CHES 18-2018 农村饮水安全评价准则
- 乡政府实习报告3篇-
- 我最喜欢的一种美味作文(课堂PPT)
- 行风建设工作台账
- 幼儿园“一岗双责”制度
- ISO2018年发布的新标准纺织服装类
评论
0/150
提交评论