最大子数组之和(C#实现)

public static int MaxSubSequSum(int[] arr, ref int intStart, ref int intEnd)

{

int MaxSum = 0;

int TmpSum = 0;

for (int i = 0, j = 0; j < arr.Length; j++)

{

TmpSum += arr[j];

//如果截止到当前位置之和(TmpSum)大于最大子序列和,则更新最大子序列和

if (TmpSum > MaxSum)

{

MaxSum = TmpSum;

//更新起始,结束位置

intStart = i;

intEnd = j;

}

else if (TmpSum < 0)//如果截止到当前位置之和为负

{

//相当于截掉前面的序列,从新开始计算,起始位置更新为原结束位置后面一个

i = j + 1;

TmpSum = 0;

}

}

return MaxSum;

}

posted @ 2010-09-13 10:38  purplesun  阅读(335)  评论(2编辑  收藏  举报