编程珠玑第八章,maxsofar保存的是第i个元素之前的最大子数组和
maxsofar=0
maxendinghere=0
for i=[0,n)
maxendinghere=max(maxendinghere+x[i],0)
maxsofar=max(maxsofar,maxendinghere)
for(int i=0; i<len; ++i )
{
if( maxendinghere > 0 )
maxendinghere += x[i];
else
maxendinghere = x[i];
if ( maxsofar < maxendinghere )
{
maxsofar = maxendinghere;
}
}