


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
求最大子段和1)简单蛮力算法的程序实现及其效率分析,2)分治法求解的程序实现及其效率分析,包括效率分析过程的递归求解。3)动态规划法求解的程序实现及其效率分析。分析:给定n个整数(可能为负数)组成的序列a1,a2 ,an,求该序列如的子段和的最大值。当所给的整均为负数时定义子段和为0,依此定义,所求的最优值为,例如,当(a1,a2,a3,a4,a4,a6)=(-2,11,-4,13,-5,-2)时,最大子段和为20。解答:1)简单蛮力算法的程序实现及其效率分析程序实现:#include #include #define N 7int aN = -2,11,-4,13,-5,-2,8;/用蛮力法求最大子段和 int ManLiFa(int *a,int n) int besti=-1; int bestj=-1; int sum = 0; for(int i = 1;i=n;i+) int thissum = 0; for (int j = i;jsum) sum = thissum; besti = i; bestj = j; printf(起点 = +besti); printf(终点 = +bestj); return sum; int main() printf(蛮力法 最大子段和: %dn,ManLiFa(a, N);return 0;效率分析:从这个算法的两个for循环可看出它的时间复杂度,T(n)=O(n2)。2)分治法求解的程序实现及其效率分析。思路:针对最大子段和这个具体问题本身的结构,我们还可以从算法设计的策略上对上述O(n2)计算时间算法进行更进一步的改进。从问题的解结构也可以看出,它适合于用分治法求解。如果将所给的序列a1:n分为长度相等的两段a1:n/2和an/2+1:n,分别求出这两段的最大子段和,则a1:n的最大子段和有三种情况:(1) a1:n的最大子段和与a1:n/2的最大子段和相同(2) a1:n的最大子段和与an/2+1:n的最大子段和相同(3) a1:n的最大子段和为a+aj,并且1=i=n/2,n/2+1=j=n。对于(1)和(2)两种情况可递归求得,但是对于情况(3),容易看出an/2,an/2+1在最大子段中。因此,我们可以在a1:n/2中计算出s1=max(an/2+an/2-1+a),0=i=n/2,并在an/2+1:n中计算出s2= max(an/2+1+an/2+2+a),n/2+1=i=n。则s1+s2为出现情况(3)的最大子段和。程序实现:#include #include #include #define N 7int MaxSubSum(int *a, int left, int right); /分治法求最大子段和 int aN = -2,11,-4,13,-5,-2,8;int MaxSum(int *a, int n) /a是数组,n是数组大小 return MaxSubSum(a, 0, n-1); /分治法int MaxSubSum(int a,int left,int right) int i,sum=0;if(left=right)sum=aleft0?aleft:0;else int center=(left+right)/2;int leftsum=MaxSubSum(a,left,center);int rightsum=MaxSubSum(a,center+1,right);int s1=0,lefts=0; for(i=center;i=left;i-) lefts+=ai;if(leftss1)s1=lefts; int s2=0;int rights=0; for(i=center+1;is2)s2=rights; sum=s1+s2;if(sumleftsum) sum=leftsum;if(sumc,由此递归方程可知,T(n)=O(nlogn)。3)动态规划算法来处理这个问题。思路:在对于上述分治算法的分析中我们注意到,若记 则所求的最大子段和为由bj的定义可易知,当bj-10时bj=bj-1+aj,否则bj=aj。故bj的动态规划递归式为: bj=max(bj-1+aj,aj),1=j=n。程序实现:#include #include #include #define N 7int aN = -2,11,-4,13,-5,-2,8;int MaxSumDP(int *a, int n) int i,sum=0,b=0; for(i=1;i0)b+=ai; elseb=ai;if(bsum)sum=b; return sum; int main() printf(动态规划 最大子段和: %dn, MaxSumDP(a, N); return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年财务管理部招聘面试实战模拟题及答案
- 国有银行笔试题库及答案
- 2025年政策法规解读与应对模拟题及答案面向公务员备考者
- 2025年草原监理员考试模拟题解析及答案
- 2025年建筑师执业资格考试全真模拟试题
- 2026届河南省荥阳市第二高级中学高一化学第一学期期中学业水平测试试题含解析
- 2025年高职院校财务招聘考试热点解析与备考建议
- 2025年造纸行业专业技能提升模拟题及答案
- 2025年国际贸易公司招聘笔试模拟试题及备考指南
- 2025年全面解析气象部门事业单位招聘考试内容与模拟题集合
- 综采工作面液压支架安装回撤工理论考核试题及答案
- 初中高中英语所有单词集合带音标
- 露天矿山危险源辨识(汇总)
- 放射科质控汇报
- GB/T 31091-2014煤场管理通用技术要求
- GB/T 24218.1-2009纺织品非织造布试验方法第1部分:单位面积质量的测定
- 万东GFS型高频高压发生装置维修手册
- 公寓de全人物攻略本为个人爱好而制成如需转载注明信息
- 企业经营沙盘模拟实训指导书
- 汉密尔顿抑郁量表17项
- 《现代物流管理》第一章-导论(课用)
评论
0/150
提交评论