4.25软件工程课下作业
源代码:
1 package text; 2 import java.util.Scanner; 3 4 import javax.swing.JOptionPane; 5 6 public class shuzu2 { 7 public static void main(String []args) 8 { 9 Scanner s=new Scanner(System.in); 10 String str1=JOptionPane.showInputDialog(null,"请输入数组长度:"); 11 int sum=Integer.parseInt(str1); 12 int []a=new int[sum]; 13 JOptionPane.showMessageDialog(null,"请输入"+sum+"个数"); 14 for(int i=0;i<sum;i++) 15 { 16 String str2=JOptionPane.showInputDialog(null,"请输入第"+(i+1)+"个数:"); 17 a[i]=Integer.parseInt(str1);; 18 } 19 s.close(); 20 int sum1=0; 21 for(int i=1;i<=sum;i++) 22 { 23 sum1=sum1+i; 24 } 25 int [] b=new int[sum1]; 26 int temp1=0; 27 int max=a[0]; 28 int temp3=0; 29 int temp4=0; 30 for(int i=0;i<sum;i++) 31 { 32 int temp=0; 33 for(int k=0;k<sum-i;k++) 34 { 35 temp=temp+a[i+k]; 36 b[temp1]=temp; 37 if(max<b[temp1]) 38 { temp3=i; 39 temp4=k+1; 40 max=b[temp1]; 41 } 42 if(temp1==0) 43 System.out.println("第1次:a[0]为最大子数组是"+a[0]); 44 else{ 45 if(max==b[temp1]) 46 System.out.println("第"+(temp1+1)+"次:a["+temp3+"]到a["+(temp3+temp4-2)+"],a["+i+"]到a["+(i+k)+"]的和最大为:"+temp); 47 else 48 System.out.println("第"+(temp1+1)+"次:a["+i+"]到a["+(i+k)+"],a["+temp3+"]到a["+(temp3+temp4-1)+"]的和最大为:"+max); 49 } 50 temp1++; 51 } 52 } 53 System.out.println("所有子数组和数组如下:"); 54 for(int i=0;i<sum1-1;i++) 55 { 56 System.out.print(b[i]+" "); 57 } 58 System.out.println(""); 59 System.out.println("其排序如下"); 60 int temp=1; 61 for(int i=0;i<sum1-1;i++) 62 { 63 System.out.print("第"+temp+"次排序:"); 64 for(int k=0;k<sum1-1-i;k++) 65 { 66 if(b[k]<b[k+1]) 67 { 68 int temp2=b[k]; 69 b[k]=b[k+1]; 70 b[k+1]=temp2; 71 } 72 } 73 for(int j=0;j<sum1-1;j++) 74 { 75 System.out.print(b[j]+" "); 76 } 77 System.out.println(""); 78 temp++; 79 } 80 JOptionPane.showMessageDialog(null,"最大的子数组和为"+b[0]); 81 } 82 }
运行结果: