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] + " ");
}
}
}