/**
* 求数组的子数组之和的最大值,同时求得最大子数组的位置
*
*/
public class SubArraySum {
public static int sum(int a[]) {
int start = a[a.length - 1];
int max = a[a.length - 1];
/* 最大子数组的高位 */
int high = a.length - 1;
/* 最大子数组的低位 */
int low = -1;
for (int i = a.length - 2; i >= 0; i--) {
start += a[i];
if (start < 0) {
start = 0;
if (i - 1 >= 0) {
high = i - 1;
}
}
if (start > max) {
max = start;
low = i;
}
}
System.out.println("low=" + low + " " + "high=" + high);
return max;
}
public static void main(String[] args) {
int[] a = { -5, 3, 2, 0, -8, 4, -6, 7, 1, 4 };
System.out.println(sum(a));
}
}
求数组的子数组之和的最大值,同时求得最大子数组的位置
最新推荐文章于 2020-11-18 15:33:10 发布