问题描述:
给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。
例如:
对于6 -1 5 4 -7,最长子段和为14,是6+(-1)+5+4
最直接的方法:穷举法:对数组的每一个i到j和都求出来,求出最大值,算法很好想
int result=0;
for(int i=0;i<n;i++){
for(int j=i;j<n;j++){
int sum=0;
for(int k=i;k<=j;k++)
sum+=a[k];
result=max(result,sum);
}
}
return result;
可以看出,此方法时间复杂度为O(n^3)