1.什么是最大连续子序列?
最大连续子序列问题是一个非常经典的问题,需要求解出一个数组中的最大连续子序列的和。比如数组{6, -3, -2, 7, -15, 1, 2, 2},它的最大连续子序列为{6,-3,-2,7},和为8。
2.解题思路
(1)暴力搜索
最大连续子序列的和只可能从数组0到n-1中某个位置开始,我们可以遍历0到n-1个位置,计算由这个位置开始的所有连续子序列中的和的最大值,最终求出全局最大值即可。更详细的讲,就是计算从位置0开始的最大连续子序列的和,从位置1开始的最大连续子序列的和…。直到从位置n-1开始的最大连续子序列的和,最后求出所有这些连续子序列和中的最大值,这个值就是答案。
int GreatestSum(int[] array){
int maxsum = array[0]; //初始化最大值起初为第一个元素
for (int i = 0; i < array.length; i++) {
//求以第i个元素开始的所有子序列和
int sum = 0;
for (int j = i; j < array.length; j++) {
//从位置 i开始计算从 i开始的最大连续子序列和的大小,如果大于 max,则更新 max。
sum += array[j];
if (sum > maxsum)
maxsum = sum;
}
}