方法是找到线性函数图像的极点:
#include "stdio.h"
int GetMaxChildArr( int arr[],int size)
{
int i = 0, sum = 0;
int pos =0x80000000 ; /*/一个负的非常大的数,作为最大值的临界点*/
for(i=0 ; i < size ;i++)
{
sum += arr[i];
if( pos <= sum ) /*如果加起来之后,大于临界点,就修改临界点*/
pos = sum;
if(sum < 0) /* 如果前面的数字小于0,忽略前面的*/
sum =0 ;
}
return pos; /*返回临界点*/
}
void main()
{
int a[9] ={-8,-2,-3,-4,-1,-3};
int b[9] ={1, -2, 3, 10, -4, 7, 2, -5 };
printf("%d\n",GetMaxChildArr(a,6));
printf("%d\n",GetMaxChildArr(b,8));
}