package arithmetic; /** * @author SHI * 求一个数组中相加值最大的连续序列元素 */ public class MaxSequence { public static void main(String[] args) { int[] a=new int[]{-2,9,-3,4,-6,7,-6,4}; findBigSequence(a); } /** * 思想: (1)计算出该数组的所有元素和,假设该值为最大 * (2)从数组下标1到a.length-1依次求和,每循环求得一个值就与假设的最大值比较 * @param a */ public static void findBigSequence(int[] a) { int sum = 0; for(int i=0;i<a.length;i++) { sum += a[i]; } int max = sum; int start = 1; int flag = 0; int sum1 = 0; //比较,满足条件就交换 for(;start<a.length;start++) { sum1 += a[start]; if(max < sum1) { max = sum1; flag = start; } } //打印找到的序列元素 for(int i = 0;i<flag;i++) { System.out.print(a[i] + " "); } } }