源代码:
package text; import java.util.Scanner; import javax.swing.JOptionPane; public class shuzu2 { public static void main(String []args) { Scanner s=new Scanner(System.in); String str1=JOptionPane.showInputDialog(null,"请输入数组长度:"); int sum=Integer.parseInt(str1); int []a=new int[sum]; JOptionPane.showMessageDialog(null,"请输入"+sum+"个数"); for(int i=0;i<sum;i++) { String str2=JOptionPane.showInputDialog(null,"请输入第"+(i+1)+"个数:"); a[i]=Integer.parseInt(str1);; } s.close(); int sum1=0; for(int i=1;i<=sum;i++) { sum1=sum1+i; } int [] b=new int[sum1]; int temp1=0; int max=a[0]; int temp3=0; int temp4=0; for(int i=0;i<sum;i++) { int temp=0; for(int k=0;k<sum-i;k++) { temp=temp+a[i+k]; b[temp1]=temp; if(max<b[temp1]) { temp3=i; temp4=k+1; max=b[temp1]; } if(temp1==0) System.out.println("第1次:a[0]为最大子数组是"+a[0]); else{ if(max==b[temp1]) System.out.println("第"+(temp1+1)+"次:a["+temp3+"]到a["+(temp3+temp4-2)+"],a["+i+"]到a["+(i+k)+"]的和最大为:"+temp); else System.out.println("第"+(temp1+1)+"次:a["+i+"]到a["+(i+k)+"],a["+temp3+"]到a["+(temp3+temp4-1)+"]的和最大为:"+max); } temp1++; } } System.out.println("所有子数组和数组如下:"); for(int i=0;i<sum1-1;i++) { System.out.print(b[i]+" "); } System.out.println(""); System.out.println("其排序如下"); int temp=1; for(int i=0;i<sum1-1;i++) { System.out.print("第"+temp+"次排序:"); for(int k=0;k<sum1-1-i;k++) { if(b[k]<b[k+1]) { int temp2=b[k]; b[k]=b[k+1]; b[k+1]=temp2; } } for(int j=0;j<sum1-1;j++) { System.out.print(b[j]+" "); } System.out.println(""); temp++; } JOptionPane.showMessageDialog(null,"最大的子数组和为"+b[0]); } }
结果: