挑战面试编程:最大连续子序列和
问题
对于形如:int arr[] = { 1, -5, 3, 8, -9, 6 };的数组,求出它的最大连续子序列和。
若数组中全部元素都是正数,则最大连续子序列和即是整个数组。
若数组中全部元素都是负数,则最大连续子序列和即是空序列,最大和就是0。
方法一
用sum[i,j]表示arr[i]到arr[j]的和,则显然可以通过枚举(i<=j),求出所有的和。
int maxSubArr(int *arr, int n)
{
int i, j, k, sum, maxsofar;
maxsofar = 0;
for (i = 0; i < n; i++)
for (j = i; j < n; j++)
{
sum = 0;
for (k = i; k <= j; k++)
sum += arr[k];
maxsofar = max(maxsofar, sum);
}
return m