1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.List; 4 5 /** 6 * 7 * @author gentleKay 8 * 题目描述 9 * HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。 10 * 今天测试组开完会后,他又发话了:在古老的一维模式识别中, 11 * 常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。 12 * 但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢? 13 * 例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。 14 * 给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1) 15 */ 16 17 public class Main30 { 18 19 public static void main(String[] args) { 20 // TODO Auto-generated method stub 21 int[] array = {1,-2,3,10,-4,7,2,-5}; 22 int num = Main30.FindGreatestSumOfSubArray(array); 23 System.out.println(num); 24 } 25 26 public static int FindGreatestSumOfSubArray(int[] array) { 27 int num = 0; 28 List<Integer> list = new ArrayList<>(); 29 for (int i=0;i<array.length;i++) { 30 num = 0; 31 for (int j=i;j<array.length;j++) { 32 num = num +array[j]; 33 list.add(num); 34 } 35 } 36 if (list.size() <= 0) { 37 return 0; 38 } 39 Collections.sort(list); 40 return list.get(list.size()-1); 41 } 42 43 }
原文:https://www.cnblogs.com/strive-19970713/p/11151357.html