结对开发---二维数组

结对:

严雅芳 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)工作照:

时间: 2024-08-07 08:20:40

结对开发---二维数组的相关文章

结对开发——求环形二维数组最大子矩阵和的问题

一.题目要求 输入一个二维整形数组,数组里有正数也有负数.二维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.要求时间复杂度为O(n)题目:返回一个二维整数数组中最大子数组的和 二.解题思路 这次就在以前的基础上进行修改,先对二维数组进行了重构,形成一个环状二维数组,然后再用求二维数组子矩阵最大和的方法求得最终结果. 三.程序代码 1 #include "stdafx.h" 2 #include<i

软件工程课堂训练——结对开发之环状二维数组

一.题目及要求: 题目:返回一个整数数组中最大子数组的和 要求(新加):①输入一个二维整形数组,数组里有正数也有负数:②二维数组首尾相接,像一条首尾相接的带子一样. 结对人员:胡亚宝  焦燕 二.设计思路: 这个题目其实就是二维数组和环型数组的结合,要解决这个问题,将之前的两个问题融合一下即可. 首先解决求出二维数组中最大子数组的问题,然后沿用一维数组的方法,将第一列放到最后一列,在求出新的二维数组的最大子数组,依次求出各个二维数组的最大子数组. 三.部分源代码: 1 for (m=0;m<5;

二维数组最大子数组(结对开发)

1.题目要求 题目:返回一个二维整数数组中最大联通子数组的和. 要求: 输入一个二维整形数组,数组里有正数也有负数. 求所有子数组的和的最大值. 2.设计思想: 对n*m的二维数组进行分解,分解为n个一维数组,再先求这n个一维数组的最大子数组和,并记下每行最大一维子数组的下标如2-5,这是就会分两种情况第一种是行之间的最大子数组是相连的,如第一行是2-5,第二行是3-6,这是直接相加就行.第二种是不相连的如第一行是2-5,第二行是6-7,这时候就把每行的最大子数组看成一个整体,再使每个最大数组块

3月31号周二课堂练习:结对开发----求二维数组组成的矩阵中子矩阵的最大值二

一.题目要求 1.1输入一个二维整形数组,数组里有正数也有负数. 1.2二维数组首尾相接,象个一条首尾相接带子一样. 1.3数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 1.4求所有子数组的和的最大值.要求时间复杂度为O(n). 二.结对要求 2.1两人结对完成编程任务. 2.2一人主要负责程序分析,代码编程. 2.3一人负责代码复审和代码测试计划. 2.4发表一篇博客文章讲述两人合作中的过程.体会以及如何解决冲突(附结对开发的工作照). 三.设计过程 上次已经算过二维数组中

体验结对开发的乐趣(5)--(首尾相连的二维数组求最大子数组和的问题)

结对伙伴:信1201-2班高扬.信1201-1班韩雪东 一.题目要求与设计思想 题目要求:在上一次的基础上把数组变为二维数组,然后首尾相接,形成连环,然后求和最大的子数组: 设计思想:一维数组首尾相连的问题已经得到解决,二位数组求和最大的子数组的问题也已经解决了,就是把这两个程序思想融在一起,然后在短短的时间内就完成了这次课堂项目. 二.源代码 1 // erweishuzuqiuzuida.cpp : Defines the entry point for the console applic

结对开发-求环状二维数组最大子数组

结对成员:信1201-1班    黄亚萍 信1201-1班    袁亚姣 一.题目要求 要求:            输入一个二维整形数组,数组里有正数也有负数.            二维数组首尾相接,象个一条首尾相接带子一样.            数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.            求所有子数组的和的最大值.要求时间复杂度为O(n)题目:返回一个二维整数数组中最大子数组的和. 二.设计思路 类似于3,将二维数组转化为一维数组来求最大子数组

结对开发--四实现循环二维数组求最大子数组的和

一.实现思路 再上一个实验基础上加上环,我们实现环的思想是每一列依次向此替换,直至替换出能出现的所有的二维数组,再用上一个求最大子数组的方法全部实现 二.实验代码 package com.minirisoft; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.Scanner; public class HuanTwoArray { public stat

软件工程结对开发之求二维数组中连续最大子数组之和2

一.题目要求 题目:返回一个二维整数数组中最大子数组的和. 要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思路 先调用以前求二维最大连续子数组之和的maxSubArray函数求一个首尾不相邻的二维最大连续子数组之和,接着用将第k列各元素左移一列可以再求一个最大连续子数组之和 ,循环m次(因为原二维数组有m列)求得每个

结对开发Ⅵ——循环二维数组求和最大的子数组

一.题目及要求 题目:返回一个二维整数数组中最大子数组的和. 要求: 输入一个二维整形数组,数组里有正数也有负数.    二维数组首尾相接,象个一条首尾相接带子一样.     数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.  求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思路 (1)二维数组我们采用的还是数组的形式: (2)读取nxm的二维数组,储存成nx2m,把前m列重复加在二维数组的最后: (3)搜索最大数组的方法和不循环的二维数组是一样的,就是再加上判断条