连续子数组的最大和
题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度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 }