划分法律,找出最大的分段,首先是问题.docVIP

  • 4
  • 0
  • 约1.97万字
  • 约 3页
  • 2017-08-10 发布于河南
  • 举报

划分法律,找出最大的分段,首先是问题.doc

划分法律,找出最大的分段,首先是问题

分治法求最大子段和首先将问题 1、基本思想: 用分治法求最大子段和首先将问题划分,即将一直序列划分成长度相等的两个序列,这时会出现3种情况,即 eq \o\ac(○,1)最大子段和在第一个序列, eq \o\ac(○,2)最大子段和在第二个序列和 eq \o\ac(○,3)最大子段和在第一个序列与第二个序列之间。然后,将3种情况的最大子段和合并,取三者之中的最大值为问题的解。 2、复杂度分析: 对应划分得到的情况 eq \o\ac(○,1)和 eq \o\ac(○,2),需要分别递归求解,对应情况 eq \o\ac(○,3),两个并列的for循环的时间复杂度是O(n),所以有递推公式为: 1 n=1 T(n)= 2T(n/2)+n n1 所以,分治算法的时间复杂度是O(nlog2n)。 3、代码实现: #include IOSTREAM #include TIME.H #include WINDOWS.H #define MAX 10000 using namespace std; int fzhsum(int a[],int left,int right)//分治法 { int sum=0; int leftsum=0,rightsum=0; int center; int i; if(left==right) { if(a[left]0) su

文档评论(0)

1亿VIP精品文档

相关文档