实验要求:

要求程序必须能处理1000个元素

每个元素是int32类型的,出现子数组之和大于整形表示的最大范围会出现什么情况

代码:

 1 package 子数组更改;
 2 
 3 import java.util.Scanner;
 4 
 5 public class zsz {
 6 
 7     /**
 8      * @param args
 9      */
10     public static void main(String[] args) {
11         // TODO Auto-generated method stub
12 
13         Scanner A=new Scanner(System.in);
14         System.out.println("请输入数组长度:");
15         int n=A.nextInt();
16         
17         System.out.println("请输入数组数值范围:");
18         int N=A.nextInt();
19         int M=A.nextInt();
20         int a[]=new int[n];
21         int b[][]=new int[n][n];
22         
23         int i;
24         System.out.println("数组为:");
25         for(i=0;i<n;i++)
26         {
27             a[i]=N+(int)(Math.random()*(M-N));
28             System.out.print(a[i]+"\t");
29         }
30         System.out.println();
31         
32         int j,k=n,t;
33         for(i=0;i<n;i++)
34         {
35             for(j=0;j<k;j++)
36             {
37                 for(t=j;t<j+i+1;t++)
38                 {
39                     b[i][j]+=a[t];
40                 }
41             }
42             k--;
43         }
44         
45         System.out.println("各子数组大小:");
46         for(i=0;i<n;i++){
47             for(j=0;j<n;j++){
48                 System.out.print(b[i][j]+"\t");
49             }
50             System.out.println();
51         }
52         
53         int p=b[0][0];
54         int q=0,r=0;
55         for(i=0;i<n;i++)
56         {
57             for(j=0;j<n-i;j++)
58             {
59                 if(p<b[i][j])
60                 {
61                     p=b[i][j];
62                     q=i;
63                     r=j;
64                 }
65             }
66         }
67         System.out.println("\n本数组中子数组和最大的为:"+p);
68         System.out.println("这个子数组是:");
69         for(i=0;i<q+1;i++)
70         {
71             System.out.print(a[r+i]+"\t");
72         }
73 
74     }
75 
76 }
View Code

相关文章:

猜你喜欢
  • 2021-09-01
  • 2021-12-01
相关资源
相似解决方案