该题目思路:dp[i]表示以元素array[i]结尾的最大连续子数组和。
以[-2,-3,4,-1,-2,1,5,-3]为例,可以发现:
- dp[0] = -2
- dp[1] = -3
- dp[2] = 4
- dp[3] = 3
以此类推,会发现:
- dp[i] = max{dp[i-1]+array[i],array[i]}.
public class Solution {
public static int FindGreatestSumOfSubArray(int[] array) {
int ans = array[0];
int tmp = array[0];
for (int i = 1; i < array.length; i++) {
tmp = Math.max(array[i], tmp + array[i]);
ans = Math.max(ans, tmp); // 更新一下答案,不属于动态规划中的步骤
}
return ans;
}
public static void main(String[] args) {
int[] a = {1, -2, 3, 10, -4, 7, 2, -5};
System.out.println(FindGreatestSumOfSubArray(a));
}
}