求一个数组中的子数组最大和,采取的是逼近的办法,如果之前的累积量为正,那么这个累积量会为下次累积做贡献,如果为负,那么该累积量应该丢弃,因为他成为下次累积的累赘
代码很简单
int getMaxSum(int *p,int nlen)
{
if (p==NULL||nlen<=0)
{
return -10086;
}
int maxSum=p[0];
int sum=0;
for (int i=0;i<nlen;i++)
{
sum+=p[i];
if (sum<0)
{
sum=0;
continue;
}
if (sum>maxSum)
{
maxSum=sum;
}
}
return maxSum;
}