最大的子序列和问题

问题描述:

给定整数A1,A2,…,AN(可能有负数),求的最大值(为方便起见,如果所有整数均为负数,则最大子序列和为0)。

例如:

输入:-2,11,-4,13,-5,-2时,答案为20(从A2到A4)。

C语言代码如下:

#include <stdio.h>

int MaxSubSequenceSum(const int A[], int N)
{
	int MaxSum, CurrentSum, i;
	MaxSum = 0;
	CurrentSum = 0;
	for(i=0;i<N;i++)
	{
		CurrentSum += A[i];
		if(CurrentSum > MaxSum)
			MaxSum = CurrentSum;
		else if(CurrentSum < 0)
			CurrentSum = 0;		
	}
	return MaxSum;
}

int main()
{
	int A[] = {-2,11,-4,13,-5,-2};
	int N = 6;
	int Sum = MaxSubSequenceSum(A, N);
	printf("MaxSubSequenceSum = %d\n", Sum);
	return 0;
}


你可能感兴趣的:(最大的子序列和问题)