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 }

运行结果:

原文地址:https://www.cnblogs.com/0518liu/p/11069613.html