连续子数组的最大和

题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度O(n)

 1 #include<iostream>
 2 #include<assert.h>
 3 using namespace std;
 4 
 5 int MaxAdd( int *data,int len)
 6 {
 7     assert( data != NULL && len > 0 );
 8     int max,current;
 9     max=data[0];
10     current=0;
11     for( int i = 0; i < len; i++ )
12     {
13         if( current <= 0 )
14         {
15             current = data[i];
16         }
17         else
18         {
19             current += data[i];
20         }
21 
22         if( current > max )
23             max = current;
24     }
25 
26     return max;
27 }
28 
29 
30 
31 
32 int main(void)
33 {
34     int data[]={1,2,3};
35     cout<<MaxAdd(data,3)<<endl;
36     system("pause");
37     return 0;
38 }

 

posted @ 2013-07-25 16:26  NinaGood  阅读(122)  评论(0编辑  收藏  举报