结对开发---二维数组

结对:

严雅芳 20132988

王欣欣 20132990

 

(1)设计思路:

 二维数组的求子数组的最大和,在本次设计中利用了一维数组的思路:从第一个数开始把数组相加,每加一个数对和进行判断,如果小于零,抛弃当前值,如果大于零,下一个数与零比较,小于零时,先将最大值与之前的和比较,在让和加上这个数,如果大于零,直接让和加上这个数,再取最大值和和之间的最大值。
因为是二维数组:当到第n行时,对第n行和其前面的n-1、n-2.....0行进行设计,让第n行和其前面列数相同的每1、2、3....n行的数相加,他们的和可以看成一个一维数组进行计算
 
(2)源代码:
 1 package rrr;
 2 
 3 import java.util.Random;
 4 import java.util.Scanner;
 5 
 6 public class Test {
 7 
 8     /**
 9      * @param args
10      */
11     public static void main(String[] args) {
12         // TODO Auto-generated method stub
13         System.out.println("请输入数组的行数和列数:");
14         Scanner sc=new Scanner(System.in);
15         int n=sc.nextInt();
16         int m=sc.nextInt();
17         int a[][]=new int[n][m];
18         Random rand=new Random();
19         int Sum=0;
20         int N=0;
21         int i=0;
22         int e=0;
23         System.out.print("请输入数字范围:");
24         int m1=sc.nextInt();
25         int m2=sc.nextInt();
26         for(e=0;e<m;e++)
27         {
28             for(i=0;i<n;i++)
29             {
30                 a[i][e]=(int) (m1+Math.random()*(m2-m1+1));
31                 System.out.print(a[i][e]+"  ");
32             }
33             System.out.println();
34         }
35         int M=a[0][0];
36         for(e=0;e<m;e++)
37         {
38             int y=e;
39             do
40             {
41                for(i=0;i<n;i++)
42                {
43                    for(int u=e;u>=y;u--)
44                    {
45                        Sum=Sum+a[i][u];
46                        }
47                     N=N+Sum;
48                     if(N>=M)
49                     {
50                         M=N;
51                     }
52                     if(N<0)
53                     {
54                         N=0;
55                     }
56                     Sum=0;
57                }
58                y--;
59                N=0;
60             }while(y>=0);
61         }
62         System.out.println("最大:"+M);
63     }
64 }

(3)截图:

技术分享技术分享技术分享

 

(4)合作过程:

在本次合作中,我负责对程序的编写,欣欣负责对程序的检测,在她测试时由于数值结对时的错误而显示的结果错误,我们在对程序进行分析后对错误进行了改正。在合作时真的应该多听取对方的建议并加以改正,才能使编程过程更加顺畅。

(5)工作照:

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。