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

一、题目及要求:

题目:返回一个整数数组中最大子数组的和

要求(新加):①输入一个二维整形数组,数组里有正数也有负数;②二维数组首尾相接,像一条首尾相接的带子一样。

结对人员:胡亚宝  焦燕

二、设计思路:

这个题目其实就是二维数组和环型数组的结合,要解决这个问题,将之前的两个问题融合一下即可。

首先解决求出二维数组中最大子数组的问题,然后沿用一维数组的方法,将第一列放到最后一列,在求出新的二维数组的最大子数组,依次求出各个二维数组的最大子数组。

三、部分源代码:

 1 for (m=0;m<5;m++)
 2 {
 3     for(cw1=0;cw1<3;cw1++)  //将第一列存起来
 4     {
 5         flag[cw1]=a[cw1][0];
 6     }
 7     for(lie=0;lie<4;lie++)  //从第二列开始每列的值等于它后面的元素
 8     {
 9         for(hang=0;hang<3;hang++)
10         {
11             a[hang][lie]=a[hang][lie+1];
12         }
13     }
14     for(cw2=0;cw2<3;cw2++)  //最后一列的值为刚才存的第一列
15     {
16         a[cw2][4]=flag[cw2];
17     }
18 }

四、心得体会:

这次的实验我们只完成了一部分,向上次的二维数组求相邻最大值一样,我们在这一部分遇到了困难,所以忽略了这一步。还是部分代码。但是思想和结构还是完整的。

结对开发优点也有缺点,两个人可以相互学习彼此的优点,这样有利于经验的传递。可以结合两个人的思想和聪明智慧。但是程序不是写给一个人,而是写给两个人。所以代码的结构肯定是两个人都能理解的,并且代码是两个人精华的交集那部分,绝对是去其糟粕,取之精华。还有就是当我在写代码时,有错误胡亚宝会立刻提醒我,节省了一次调试-修改-再调试的时间。

时间: 2024-12-23 13:04:57

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

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

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

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

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

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

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

软件工程课堂训练——结对开发之环数组最大和

一.题目及要求: 题目:返回一个整数数组中最大子数组的和 要求(新加):①如果数组A[0]...A[j-1]首尾相邻,允许A[i-1]...A[n-1],A[0]...A[j-1]之和最大:②同时返回最大子数组的位置. 结对人员:胡亚宝  焦燕 二.设计思路: 我们要解决两个问题:求出环数组中最大的子数组:并且定位出该子数组的位置,把它们的名称输出来.要解决这两个问题,我们从以下两个方面入手: ①求出最大子数组:将数组数值按顺序排好称为“一趟”,每求出一趟的最大子数组后,将第一个数值放到最后一个

结对开发5_循环二维数组最大字数组

一.思想 我们这次的思想和一维数组的思想一样,但是考虑到是二维的,所以其算法和结对开发3的算法一样.即加长数组的列数 加以控制条件,最后求出最大子数组的和,并输出. 二.源代码 // 结对开发5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" # include <iostream> # include <string> # define MaxRow 20 # define MaxCol 20 using namespa

软件工程课堂训练——结对开发

一.题目及要求: 1.题目:返回一个整数数组中最大子数组的和. 2.要求: ①输入一个整形数组,数组里有正数也有负数:数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和:求所有子数组的和的最大值:要求时间复杂度为O(n). ②两人结对完成编程任务:一人主要负责程序分析,代码编程,一人负责代码复审和代码测试计划. 3.结对人员:胡亚宝  焦燕 二.设计思路: ①第一个方法,定义一个数组,将所有的子数组都列出来,再将它们的和都求出来放到该数组中,再求最大值,输出.但是在编写过程中,我们发

软件工程概论---环状二维数组最大子数组和

1,题目要求 根据软件工程概论--<环状一维数组最大子数组和>和<二维数组最大子数组和>两篇博客,求环状二维数组的和. 2,思路设计 根据前面两篇博客思路做参考.在二维数组的基础上扩充二维数组的列为2*col-1.再进行二维数组的求和即可. 3,代码 #include <iostream> #include<time.h> using namespace std; #define max(a,b) ((a)>(b)?(a):(b)) #define M

环状二维数组最大子数组求和

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

环状二维数组(改进版)

上一篇环状二维数组还存在问题,当时并未判断产生的子矩阵是否超过矩阵的范围,所以结果会出现问题. 改进版的程序中对此进行了判断. 此问题分为两种,一种是最大子数组成环,一种是最大子数组未成环.未成环的部分之前已实现,下面是成环部分. 开始的思路是:将矩阵进行扩大,类似于一维数组,但是扩大后就会出现子矩阵的范围有可能超出矩阵的范围.所以在此处要有一个判断. 改进后的程序 #include <iostream> #include<time.h> using namespace std;