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);
}
本文介绍了一种解决最大子数组求和问题的算法实现,通过动态规划思想,该算法能在O(n)的时间复杂度内找到给定数组中具有最大和的连续子数组及其下标范围。
1万+

被折叠的 条评论
为什么被折叠?



