设计思想
从第一个元素开始循环,在嵌套另一个循环,从每个元素开始,依次加上后边的元素,当和大于最大值时,把和赋值给最大值,并记录此时的首元素的下标和尾元素的下标,输出这几个元素,和他们的和。
public class Max { public static void main(String[] args) { // TODO Auto-generated method stub int a[]={1,9,-5,6,-4,3}; int start = 0,end = 0; int max = a[0],sum = a[0]; for(int i=0;i<a.length;i++) { sum = a[i]; if(sum > max) { max = sum; start = i; end = i; } for(int j=i+1;j<a.length;j++) { sum+=a[j]; if(sum > max) { max = sum; start = i; end = j; } } } System.out.println("该数组是:"); for(int i=0;i<a.length;i++) { System.out.print(a[i]+" "); } System.out.println("最大子数组的和是:"+max); System.out.println("最大子数组为:"); for(int i = start;i<=end;i++) { System.out.print(a[i]+" "); } } }
运行截图