设计思想:首先建立两个数组,对其中的一个数组输入,找到其中最小的数字,把数组的值给另一个数组一一赋值,将该数组置空,从该数字起重新排序,然后进行判断,相加,得出最大子数组的和。
实验代码:
package show3; import java.util.Scanner; public class demo{ public static void main(String args[]) { int[] a=new int[100]; int[] g=new int[100]; int k=0,i,sum=0;//判断数组的数字的个数 Scanner b=new Scanner(System.in); System.out.println("输入要进行操作的数字的个数"); int j=b.nextInt(); System.out.println("请输入"+j+"个整数"); for(i=0;i<j;i++) { a[i]=b.nextInt(); } int min=a[0]; for(i=0;i<j;i++) { if(a[i]<min) { min=a[i]; k=i; } } for(i=0;i<j;i++) { g[i]=a[i]; a[i]=0; } for(i=k+1;i<j;i++) { a[i-k-1]=g[i]; } for(i=0;i<k+1;i++) { a[j-k+i-1]=g[i]; } int max=a[0]; for(i=0;i<j;i++) { if(min>=0) { sum=sum+a[i]; } else { if(sum+a[i]>=0) sum=sum+a[i]; else sum=0; } if(sum>max) max=sum; } System.out.println("字数组最大和为"+max); } }
实验结果截图: