一、求所有子数组的和的最大值
public static void main(String[] args) { int[] a = { 1, -2, 3, 10, -4, 7, 2, -5 }; FindMaxSubAry(a); } public static void FindMaxSubAry(int[] arr) { int maxStartIndex = 0;// 最大数组开始坐标 int maxEndIndex = 0; // 最大数组结束坐标 int max = 0; // 最大数组的和 int tempSum = 0; for (int i = 0; i < arr.length; i++) { tempSum += arr[i]; if (tempSum <= 0) { tempSum = 0; max = 0; maxStartIndex = i + 1; } if (tempSum > max) { max = tempSum; maxEndIndex = i; } } System.out.println(" sum:" + max); print(arr, maxStartIndex, maxEndIndex); } public static void print(int[] arr, int startIndex, int endIndex) { for (int i = startIndex; i <= endIndex; i++) { System.out.print(arr[i] + " "); } System.out.println(); }