动态规划
sum= max(sum+dp[i],dp[i])
max = max(sum,max)
public static int FindGreatestSumOfSubArray(int[] array) {
int sum = 0;//包含a[i
int max = 0;//不包括
int begin = 0;
int end = 0;
// 动态规划 sum= max =
for(int i =0;i<array.length;i++){
if(sum<=0){
begin = i;
sum = 0;
}
sum+=array[i];
if(sum > max){
end = i;
max = sum;
}
}
System.out.println(begin + " " + end);
return max;
}
由于要返回下标,
当sum<=0时候,我们要舍去前面元素,此时下标要设置为当前位置,并让sum=0
当sum>max时,说明子数组此时结束位置在i