给定K个整数的序列{ A1, A2, …, Ak },其任意连续子序列可表示为{ Ai, Ai+1, …, Aj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个。
例如给定序列{ -2, 11, -4, 13, -5, -2 },
其最大连续子序列为{ 11, -4, 13 },最大和为20。
#include<bits/stdc++.h>
using namespace std;
int maxSubSum(int a[],int n)//求a的最大连续子序列和
{
int i,maxSum=0,thisSum=0;
for(i=0;i<n;i++)
{
thisSum+=a[i];
if(thisSum<0)
{
thisSum=0;
}
if(maxSum<thisSum)
{
maxSum=thisSum;
}
}
return maxSum;
}
int main()
{
int a[]={-2,11,-4,13,-5,-2};
int n=sizeof(a)/sizeof(a[0]);
cout<<maxSubSum(a,n);
}