- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最大子数组问题:分治法
最大子数组问题:分治法这题的思想是书上的(《算法导论》),代码当然也是按照书上伪码写出的; 之前已用动态规划解决这个问题,所以问题也不用多说,简述如下: 《算法导论》中引入这个问题是通过股票的购买与出售,经过问题转换,将前一天的当天的股票差价重新表示出来,即转为了一个最大子数组的问题,具体内容我不多说,转的内容是: 13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7 找到这连续的16个数里面的连续和最大的子数组; 说一下书中的思想吧(语言组织是书中的,自认总结不会比书上好): 假定我们要寻找子数组A[low..high]的最大子数组,使用分治法意味着我们要将子数组划分为两个规模尽可能相等的子数组。也就是说,找到子数组的中央位置,比如mid,然后求解两个子数组A[low..mid]和A[mid+1..high]。所以,A[low..high]的任何连续子数组A[i..j]所处的位置必然是三种情况之一: 1.完全位于子数组A[low..mid]中,因此low=i=j=mid; 2.完全位于子数组A[mid+1..high]中,因此mid=i=j=high; 3.跨越了中点,因此low=i=midJ=HIGH;strong=/J=HIGH; 因此,A[low..high]的一个最大子数组所处的位置必然是这三种情况之一。实际上,A[low..high]的一个最大子数组必然是完全位于A[low..mid]中、完全位于A[mid+1..high]中或者跨越中点的所有子数组中和最大者。 代码: #includeconstintInfinite=-10000; intmax_left=0; intmax_right=0; usingnamespacestd; intFindMaxCrossSubarray(intA[],intlow,intmid,inthigh)//跨越{intleft_sum=Infinite;intsum=0; for(inti=mid;i=low;i--)//左半部的最大子数组 {sum+=A[i]; if(sumleft_sum){left_sum=sum;max_left=i;}} intright_sum=Infinite; sum=0;for(inti=mid+1;i=high;i++)//右半部的最大子数组 {sum+=A[i]; if(sumright_sum){right_sum=sum;max_right=i;}} returnleft_sum+right_sum;} intFindMaxSubarray(intA[],intlow,inthigh) {intleft_sum,right_sum,cross_sum;if(high==low)//一个元素 {returnA[low];}else{intmid=(low+high)/2;//分治 left_sum=FindMaxSubarray(A,low,mid);//前半部 right_sum=FindMaxSubarray(A,mid+1,high);//后半部 cross_sum=FindMaxCrossSubarray(A,low,mid,high);//跨越前后 if(left_sum=right_sumleft_sum=cross_sum)//最大子数组在左边 returnleft_sum;elseif(right_sum=left_sumright_sum=cross_sum)//右边 returnright_sum;else//跨越returncross_sum;}} intmain(){ inta[]={13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7}; //inta[]={23,4}; intlength=sizeof(a)/sizeof(int);coutPS;本文档由北大青鸟广安门收集自互联网,仅作分享之用。
您可能关注的文档
- 【精品】2011届高三英语二轮复习(鲁、津专用)精品考前特训 考前第27天.ppt
- 最全最实用地质年代表A3.doc
- Part One-Chapter5 -Double layer-Chen SL 14-15.ppt
- unit3金融英语.ppt
- 汉英笔译必备句型.pptx
- 古生物各论复习.doc
- 精读英语第三课PPT词汇解析.pptx
- 管理经济学讲义5.ppt
- 第二章 国际贸易的微观基础(一).ppt
- 地质年代表1(较新).doc
- 四川省德阳市罗江中学2025届高三考前热身化学试卷含解析.doc
- 山东省枣庄现代实验学校2025届高三下学期第五次调研考试化学试题含解析.doc
- 吉林省长春市十一高中等九校教育联盟2025届高三一诊考试生物试卷含解析.doc
- 2025届江苏省盐城市伍佑中学高考仿真模拟化学试卷含解析.doc
- 2025届广西贺州中学高考冲刺押题(最后一卷)生物试卷含解析.doc
- 安徽省池州市贵池区2025届高三第一次模拟考试生物试卷含解析.doc
- 宁夏银川一中2025届高三(最后冲刺)化学试卷含解析.doc
- 广东省广州市增城区四校联考2025届高考压轴卷化学试卷含解析.doc
- 2025届邯郸市第一中学高考生物必刷试卷含解析.doc
- 2025届安徽省安庆市石化第一中学高考仿真卷化学试卷含解析.doc
文档评论(0)