使用动态规划解法:
#include <stdio.h>
#include <stdlib.h>
int MaxSum(int *nums, int len)
{
int sum = nums[0];
int n = nums[0];
for(int i=1; i < len; i++)
{
if(n > 0) n+= nums[i];
else n = nums[i];
if(sum<n) sum = n;
}
return sum;
}
int main()
{
int nums[] = {1,2,3,-1,-2,3};
int sum = MaxSum(nums, sizeof(nums)/sizeof(nums[0]));
printf("max child sum = %d \n", sum);
}