设计思想
五个数,依次从每个数开始加,最多加五个数,如果和比之前的和大,记录此时是第几个数,并记录此时已经加了几个数,一直循环,直到找到子数组和最大的一组,并找出此时的子数组。
public class Xunhuan { public static void main(String[] args) { int a[]={2,3,-8,1,-4}; int b[]={2,3,-8,1,-4,2,3,-8,1}; int sum=0; int max=b[0]; //最大子数组的和 int t1=0; int z=0; int t=0; //从t个数开始,和之后的z个数 for(int i=0;i<5;i++) { t1=0; sum=0; //从每个数开始,总和清空 for(int j=0;j<5;j++) { sum+=b[j+i]; if(sum>max) { max=sum; //记下最大的和,并记下此时加的数的个数 t1=j; z=t1; //由于t1经常变,所以要记录每次加的数的个数 t=i; } } } System.out.println("最大数组和为:"+max); System.out.print("最大子数组为{"); for(int i=t;i<t+z;i++) System.out.print(b[i]+","); System.out.println(b[t+z]+"}"); } }
运行截图