贪心算法计算最优分解方案 - 范文中心

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

04/07

西安邮电大学

(计算机学院)

课内实验报告

实验名称:

专业名称:

班级:

学生姓名:

学号(8指导教师:

实验日期:2016年6月1日

一. 实验目的及实验环境

实验目的: 熟悉并掌握贪心算法

实验环境: windows7 vc6.0编译器

二. 实验内容

题目描述:

设n是一个正整数。现在要求将n分解成干互不相同的自然数的和,且使这些自然数的成绩最大。

算法设计:

对于给定的正整数n,编程计算最优分解方案。

三.方案设计

问题分析:

若a+b=n,则|a-b|越小,那么,a*b越大。

贪心策略:

将n分解成从2开始的连续自然数的和,优先的方式下均匀地分给前面各项。如果最后剩下一个数,将此数加到后项中。

例如: 对于8进行分解为2和3则剩下一个3;

然后2和3再分别从3中均匀地获得1最后变成3和4,最后剩下1加给4上。所以,最终分解成3和5,是8的分解为不相同的自然数乘机最大。 程序流程图:

否 是

四.测试数据及运行结果

1.正常测试数据(3组)及运行结果;

五.总结

1. 实验过程中遇到的问题及解决办法;

问题:逻辑不清晰。

解决办法:画出流程图

2.对设计及调试过程的心得体会。

贪心算法是从问题的某个初始解出发逐步,逼近给定的目标,以尽可能快地求得更好的解。当达到某一步不能继续前进时,算法停止。这时就得到了问题的一个解。但不能保证求得的解是最优的。贪心算法的优点在于时间复杂度低。贪心算法与其他最优化算法的区别在于:它具有不可后撤性,可以有后效性,一般情况下,不能满足最优化原理。贪心算法的特点就决定了它的使用范围,它一般不适用于解决可行性问题。仅适用于较容易得到可行性解得最优性问题。(这里较容易得到可行解得概念: 当前的策略选择后,不会或极少出现无解的情况。交互性题目,贪心算法是一个较好的选择。)

六.附录:源代码(电子版)

/*用贪心算法解题: 设n是一个正整数。

现在要求将n分解为若干互不相同的自然数的和,且使这些自然数的乘积最大*/ #define _CRT_SECURE_NO_WARNINGS

#include

void taixin(int n){

int a[100];//临时数组,保存分解后的数

int k = 1;//a数组的索引

int sum = 1;//最大乘积

int i;//索引

if (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,其实算上后面的是加了2 for (i = 0; i

a[k - i]++;

}

for (i = 1; i

sum *= a[i];

}

printf("分解后的数:");

for (i = 1; i

printf("%d ",a[i]);

}

}

printf("\n最大的成绩: %d", sum);

getchar();

}

void main(){

int n;

char str[50];

sprintf(str,"%s","请输入一个正整数:");

printf(str);

scanf("%d",&n);

taixin(n);

getchar();

return 0;

}


相关内容

  • 算法设计与分析
    阶乘 Public static int factorial (int n){ If (n==0) return 1; return*factorial(n-1); } Hanoi Public static void hanoi(int ...
  • 盲源分离方法
    第30卷第10期2008年10月 Journalof 电子与信息学报 Electronics&InformationTechnology .,01.30No.10 Oct.2008 基于盲源分离的小波域多重音频水印方法 马晓红 孙长 ...
  • 20世纪十大算法
    20世纪十大算法 本世纪初,美国物理学会(AmericanInstitute of Physics)和IEEE计算机社团(IEEE Computer Society)的一本联合刊物<科学与工程中的计算>发表了由田纳西大学的Jac ...
  • 硕士学位论文开题报告格式模板
    华东交通大学硕士学位论文开题报告格式模板 本模板供统招硕士和同等学历硕士使用 (2005年12月制订) 一.页面设置  纸张大小:A4,正文部分可双面印刷  页边距:上2.8cm.下2.5cm,左.右2.5cm,装订线:0cm  页眉 ...
  • 非对称加密算法对称非对称密钥加密算法
    www.woxia.net 非对称加密算法:对称/非对称密钥加 基于"对称密钥"的加密算法主要有DES.TripleDES.RC2.RC4.RC5和Blowfish等:"非密算法 对称密钥"的加密算法 ...
  • 第1章 解线性代数方程组的直接法
    第一章 解线性代数方程组的直接法 1.1 引 言 在自然科学与社会科学的研究中,常常需要求解线性代数方程组,如实验数据的曲线.曲面的拟合和用差分法或有限元法解偏微分方程等都要用到线性代数方程组的求解.由于从不同的问题导出的线性代数方程组的系 ...
  • 基于贪婪算法的自动排课表系统的研究与实现
    第29卷第18期Vol.29 No.18 计算机工程与设计 ComputerEngineeringandDesign 2008年9月Sept.2008 基于贪婪算法的自动排课表系统的研究与实现 王帮海1,2,李振坤1 (1.广东工业大学计算 ...
  • 计算机实现基于正交试验的测试用例自动生成
    测试分析·Testing and Analysis 计算机实现基于正交试验的 测试用例自动生成 陈磊 简炜 (中国软件评测中心 北京100048) [摘要]在软件测试过程中,想达到完全的测试在项目有限的时间和人力物力的局限之下,是不容易实现 ...
  • 基于遗传算法的网格资源调度算法
    第41卷第12期2004年12月 计算机研究与发展 JOURNAL OF COM PUTER RESEARCH AND DEVELOPM EN T V ol . 41, No . 12Dec . 2004 基于遗传算法的网格资源调度算法 林 ...
  • 社交网站热点话题发现
    [摘要] 微博的迅猛发展,带来了另一种社会化得新闻媒体新形式,随着社交网络的不断发展, 国外的推特和国内的新浪微博.腾讯微博, 已经成为消息发布的重要平台.微博内容不仅包含大量的文字信息, 也包括了很多无话题表达能力的特殊符号.表情符号.微 ...