int MaxSum(int a[], int size) { if (size == 0) { return INT_MIN; } int maxVal = a[0];//以最大值作为初始值 int start = 0,end = 0; for (int i = 1;i<size;++i) { if (a[i] > maxVal) { maxVal = a[i]; start = end = i; } } int temp_sum=0,step = 0; for(int i=0;i <size;i++) { temp_sum+=a[i]; if(temp_sum> maxVal) { maxVal=temp_sum; end = i; start = end - step; ++step; } else if(temp_sum <0) { step = 0; temp_sum=0; } else { ++step; } } cout<<"max sum is:"<<maxVal<<endl; cout<<"loc is: "<<start<<" "<<end<<endl; return maxVal; }