@Test public void testOneStepMax() { int[] numbers = new int[]{2, -10, 8, -10, 2}; assertEquals(8, ms.maxSub(numbers)); }
public int maxSub(int[] data) { int maxend = data[0]; int maxfar = data[0]; for (int i = 1; i < data.length; i++) { maxend = Math.max(data[i], maxend + data[i]); maxfar = Math.max(maxfar, maxend); } return maxfar > 0 ? maxfar : 0; }
MaxSubProblem { public int maxSub(int[] data) { int maxend = data[0]; int maxfar = data[0]; for (int i = 1; i < data.length; i++) { maxend = Math.max(data[i], maxend + data[i]); maxfar = Math.max(maxfar, maxend); } return maxfar > 0 ? maxfar : 0; } }
MaxSubProblem { public int maxSub(int[] data) { int maxend = data[0]; int maxfar = data[0]; for (int i = 1; i < data.length; i++) { maxend = Math.max(data[i], maxend + data[i]); maxfar = Math.max(maxfar, maxend); } return maxfar > 0 ? maxfar : 0; }  }
MaxSubProblem { public int maxSub(int[] data) { int maxend = data[0]; int maxfar = data[0]; for (int i = 1; i < data.length; i++) { maxend = Math.max(data[i], maxend + data[i]); maxfar = Math.max(maxfar, maxend); } return maxfar > 0 ? maxfar : 0; }  int maxSub1(int[] data); int maxSub2(int[] data); int maxSub(int[] data); }
MaxSubProblem { public int maxSub(int[] data) { int maxend = data[0]; int maxfar = data[0]; for (int i = 1; i < data.length; i++) { maxend = Math.max(data[i], maxend + data[i]); maxfar = Math.max(maxfar, maxend); } return maxfar > 0 ? maxfar : 0; }  int maxSub1(int[] data); int maxSub2(int[] data); int maxSub(int[] data);  }