贪心算法计算最优分解方案.docx

贪心算法计算最优分解方案.docx

ID:59130291

大小:22.47 KB

页数:4页

时间:2020-09-12

贪心算法计算最优分解方案.docx_第1页
贪心算法计算最优分解方案.docx_第2页
贪心算法计算最优分解方案.docx_第3页
贪心算法计算最优分解方案.docx_第4页
资源描述:

《贪心算法计算最优分解方案.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、西安邮电大学(计算机学院)课内实验报告实验名称:贪心算法计算最优分解方案专业名称:班级:学生姓名:学号(8位):指导教师:实验日期:2016年6月1日一.实验目的及实验环境实验目的:熟悉并掌握贪心算法实验环境:windows7vc6.0编译器二.实验内容题目描述:设n是一个正整数。现在要求将n分解成干互不相同的自然数的和,且使这些自然数的成绩最大。算法设计:对于给定的正整数n,编程计算最优分解方案。三.方案设计问题分析:若a+b=n,则

2、a-b

3、越小,那么,a*b越大。贪心策略:将n分解成从2开始的连续自然数的和,优先的方式下均匀地分给前面各项

4、。如果最后剩下一个数,将此数加到后项中。例如:对于8进行分解为2和3则剩下一个3;然后2和3再分别从3中均匀地获得1最后变成3和4,最后剩下1加给4上。所以,最终分解成3和5,是8的分解为不相同的自然数乘机最大。程序流程图:开始输入n,k=1,sum=1n>5?否是k++;a[k]=a[k-1]+1;n=n-a[k];n>a[k]?a[1]=2;n-=2;是for(i=0;i

5、测试数据(3组)及运行结果;五.总结1.实验过程中遇到的问题及解决办法;问题:逻辑不清晰。解决办法:画出流程图2.对设计及调试过程的心得体会。贪心算法是从问题的某个初始解出发逐步,逼近给定的目标,以尽可能快地求得更好的解。当达到某一步不能继续前进时,算法停止。这时就得到了问题的一个解。但不能保证求得的解是最优的。贪心算法的优点在于时间复杂度低。贪心算法与其他最优化算法的区别在于:它具有不可后撤性,可以有后效性,一般情况下,不能满足最优化原理。贪心算法的特点就决定了它的使用范围,它一般不适用于解决可行性问题。仅适用于较容易得到可行性解得最优性问题

6、。(这里较容易得到可行解得概念:当前的策略选择后,不会或极少出现无解的情况。交互性题目,贪心算法是一个较好的选择。)六.附录:源代码(电子版)/*用贪心算法解题:设n是一个正整数。现在要求将n分解为若干互不相同的自然数的和,且使这些自然数的乘积最大*/#define_CRT_SECURE_NO_WARNINGS#includevoidtaixin(intn){inta[100];//临时数组,保存分解后的数intk=1;//a数组的索引intsum=1;//最大乘积inti;//索引if(n<5){//如果小于5,那么都是乘积

7、是1*n;sum=n;}else{a[1]=2;n-=2;while(n>a[k]){k++;a[k]=a[k-1]+1;n=n-a[k];}if(n==a[k]){a[k]++;n--;}//让最后一个先加1,其实算上后面的是加了2for(i=0;i

8、intn;charstr[50];sprintf(str,"%s","请输入一个正整数:");printf(str);scanf("%d",&n);taixin(n);getchar();return0;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。