动态规划法求最大字段和

动态规划法求最大字段和

ID:28007915

大小:57.74 KB

页数:7页

时间:2018-12-07

动态规划法求最大字段和_第1页
动态规划法求最大字段和_第2页
动态规划法求最大字段和_第3页
动态规划法求最大字段和_第4页
动态规划法求最大字段和_第5页
资源描述:

《动态规划法求最大字段和》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实验题目给定由个整数组成的序列(al,a2,…,az?),求该序列形如k=i的子段和的最大值,当所有整数均为负整数时,其最大子段和为0。实验目的(1)深刻掌握动态规划法的设计思想并能熟练运用;(2)理解这样一个观点:同样的问题可以用不同的方法解决,一个好的算法是反复努力和重新修正的结果。实验内容(包括代码和对应的执行结果截图)实验代码如下:#includeusingnamespacestd;//蛮力法求解最大字段和问题intmlf(inta[],ints[][6])inti,j,k=O;for(i=0;i<6;i++)s剛=a[i];

2、for(i=0;i<6;i++)for(j=i+l;j<6;j++)s[i][j]=s[i]U-l]+a[j];for(i=0;i<6;i++)for(j=i;j<6;j++)if(s[i]U]〉k)k=s[i][j];if(k<0)k=0;returnk;}//分治法求解最大字段和问题intMaxSum(inta[l,intleft,intright)intsum=O;if(left==right){//如果序列长度为1,直接求解if(a[left]〉O)sum=a[left];elsesum=O;}else{intcenter=(left+right

3、)/2;"划分intleftsum=MaxSum(a,left,center);//对应情况①,递伯求解intrightsum=MaxSum(a,center+l,right);//对应情况②,递归求解intsl=O;intlefts=O;//以下对成情况③,先求解sifor(inti=center;i〉=left;i--){lefts+=a[i];if(lefts〉sl)sl=lefts;}ints2=0;intrights=0;//再求解s2for(intj=center+1;j<=right;j++)rights+=a[j];if(rights〉s

4、2)s2=rights;}sum=sl+s2;//计算情况③的最大子段和if(sumsum)sum=b;}returnsum;}voidmain(){cout«n输

5、入六个整数:"<entsandSettingsAd>inistrator桌

6、面Debugshiyan5.exeM020R-••©22-c>u•■••ST/n为为和ti和—on-2農子c5子H^Kto-大大最y数13曰署5ke整4解解法y个•裘划an六11法壞S入0力塞es输H2蛮分动pr瞭狗拼音半,实验总结:该实验表明同一个问题可以用不同的方法解决。应用蛮力法求解最大字段和问题的时间复杂度为0(n2)。应用分治法求解,对应划分得到的情况①和②,需要分别递归求解,对应情况③,两个并列for循环的时间复杂性是0(〃),所以,存在如下递推式f1n=lr(z?)=[2r(n/2)+z7n>l根据1.2.4节主定理,算法4.7的时间

7、复杂性为O(nlog2At)。应用动态规划法求解,其思想是将问题划分为若干个子问题,但这些子问题不一定独立,用一个表格把每个子问题的解保存起来,当用到该子问题的解时查表即可,从而避免了大量的重复计算。其时间复杂度为0(n),所以从时间性能上比蛮力法好。

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

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

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