一个整型数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和,求所有子数组的和的最大值,例如输入的数组为1,-2,3,10,-4,7,2,-5,那么最大的子数组为3,10,-4,7,2,因此输出为该子数组的和18
int MaxSum(int* a,int n)
{
int MaxSum=a[0];
int TempSum=0;
for (int i=0;i<n;i++)
{
TempSum=a[i];
for (int j=i+1;j<n;j++)
{
bool ContinueAdd=true;
if (a[j]>=0)
{
TempSum+=a[j];
}
else if (a[j]<0)
{
int tmpAJ=a[j];
for (int m=j;m<n;m++)
{
tmpAJ+=a[m];
if (tmpAJ>=0)
{
TempSum+=a[j];
break;
}
}
if(tmpAJ<0)
ContinueAdd=false;
}
if (!ContinueAdd)
{
break;
}
}
if(TempSum>MaxS