码迷,mamicode.com
首页 > 编程语言 > 详细

算法导论-----最大子数组问题

时间:2017-10-24 21:02:05      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:bsp   return   ros   color   sub   stdio.h   std   ++   span   

 1 #include"stdio.h"
 2 int findMaxCrossingSubarray(int a[],int low,int high);
 3 int findMaximumSubarray(int a[],int low,int high);
 4 int maxLeft,maxRight;
 5 int main()
 6 {
 7     int a[100] = {0,13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7};
 8     int maxSum;
 9     maxSum = findMaximumSubarray(a,1,16);
10     printf("%d %d\n",maxLeft,maxRight);
11     printf("%d\n",maxSum);
12     return 0;
13 }
14 int findMaxCrossingSubarray(int a[],int low,int high)
15 {
16     int i,j;
17     int mid;
18     int leftSum = -9999,rightSum = -9999;
19     int sum = 0;
20 
21     mid = (low + high) / 2;
22     for(i = mid;i>=1;i--)
23     {
24         sum = sum + a[i];
25         if(sum > leftSum)
26         {
27             leftSum = sum;
28             maxLeft = i;
29         }
30     }
31     sum = 0;
32     for(j = mid +1;j<=high;j++)
33     {
34         sum = sum + a[j];
35         if(sum > rightSum)
36         {
37             rightSum = sum;
38             maxRight = j;
39         }
40     }
41     return leftSum + rightSum;
42 }
43 int findMaximumSubarray(int a[],int low,int high)
44 {
45     int mid;
46     int leftSum,crossSum,rightSum;
47     if(high == low)
48         return a[low];
49     else
50     {
51         mid = (low + high) / 2;
52         leftSum = findMaximumSubarray(a,low,mid);
53         rightSum = findMaximumSubarray(a,mid + 1,high);
54         crossSum = findMaxCrossingSubarray(a,low,high);
55         if(leftSum >= rightSum && leftSum >= crossSum)
56             return leftSum;
57         else if(rightSum >= leftSum && rightSum >= crossSum)
58             return rightSum;
59         else
60             return crossSum;
61     }
62 }

 

算法导论-----最大子数组问题

标签:bsp   return   ros   color   sub   stdio.h   std   ++   span   

原文地址:http://www.cnblogs.com/guochangyu/p/7725286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!