/* 动态规划: dp[n] = max(dp[n-1]+array[i],0); */ int FindGreatestSumOfSubArray(int* array, int arrayLen ) { int n1 = array[0]>0?array[0]:0; int max = array[0]; for(int i = 1; i < arrayLen; i++){ int temp = n1+array[i]; //先存储max,防止max为负数的情况。 max = temp>max?temp:max; n1 = temp>0?temp:0; } return max; }