The maximum-subarray problem
public static void main(String[] args) {
int[] A = {13, -3, -25, 20, -3, -16, -23, 18, 20, -7, 12, -5, -22, 15, -4, 7};
int low = 0;
int high = 0;
int sum = A[0];
int max = A[0]; //已知A[j-1]的最大子数组和
int max_low=0;
for (int i = 1; i < A.length; i++) {
if(max>0){
max=A[i]+max;
}else {
max=A[i];
max_low=i;
}
if(max>sum){
sum=max;
low=max_low;
high=i;
}
}
System.out.println(low + " " + high + " " + sum);
}