入门的动态规划问题:

public class Solution {
    public int FindGreatestSumOfSubArray(int[] array) {
        int len = array.length;
        int[] dp = new int[len];
        int max = array[0];
        dp[0] = array[0];
        for(int i = 1; i < len; i++) {
            int newMax = dp[i - 1] + array[i];
            if(newMax > array[i]) {
                dp[i] = newMax;
            } else {
                dp[i] = array[i]; // dp[i]取array[i]就已经超过了加上前面所有的值
            }
            if(dp[i] > max) {
                max = dp[i];
            }
        }
        return max;
    }
}