要求:

1,输入一个二维整形数组,数组里有正数也有负数。

2,二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和,

3,求所有子数组的和的最大值。

设计思路:

参照一维整数数组求解最大子数组的方法,我们想着将二维数组通过行不同,列相加的方法转化为一维整数数组再求解最大子数组之和。

具体实现:先求出每一行的最大子数组之和,之后比较得出最大和MaxSum,然后通过上述方法求二行的最大子数组之和并与MaxSum比较,用MaxSum存放较大值。以此类推,求三行,四行。。。

最后实现最大子数组的输出及其和的输出。

合作过程:

两人合作探讨设计思路;

一人负责分析程序,编写代码;

另一人负责代码复审和代码测试。

主要代码:

 //二维整数数组最大子数组之和#include <iostream>#include <stdlib.h>#include <time.h>using namespace std;int main(){int M,N;cout << "输入二维数组的行数和列数:" << endl;cin >> M >> N;int data[M][N],line[N],sum = 0,d1 = 0;int MaxSum ,Maxd1,end1[M][N] = {0},end2[M][N] = {0};int i_max = 0,j_max = 0;srand((unsigned int)time(0));  //保证生成不同的随机数cout << "二维数组为:" << endl;for (int j = 0;j < M;j++)   //给二维数组的元素赋值并输出,取值范围是-25到25
     {for (int k = 0;k < N;k++){data[j][k] = rand()%50 - 25;cout << data[j][k] << '\t';}cout << endl;}cout << endl;MaxSum = data[0][0];    //初值赋值为数组第一行第一个元素Maxd1 = data[0][0];for (int i = 0;i < M;i++){for (int i1 = 0;i1 < M-i;i1++)//当1行是循环M次
         {for (int j = 0;j < N;j++)//赋初值
             {line[j] = 0;}for (int i2 = i1;i2 <= i1+i;i2++)//每次循环i次赋值
             {for (int j = 0;j < N;j++){line[j] += data[i2][j];}}sum = 0;for (int k = 0;k < N;k++){sum += line[k];if (sum > MaxSum){MaxSum = sum;end1[i][i1] = k;i_max = i;       //最大的时候是i行;j_max = i1;}if(sum < 0){sum = 0;}}for (int k = N-1;k >= 0;k--){d1 += line[k];if (d1 > Maxd1){Maxd1 = d1;end2[i][i1] = k;}if(d1 < 0){d1 = 0;}}}}cout << "最大子数组为:" << endl;for (int k = 0;k <= i_max;k++)//输出最大子数组元素
     {for (int k1 = end2[i_max][j_max];k1 <= end1[i_max][j_max];k1++){cout << data[j_max+k][k1] << '\t';}cout << endl;}cout << endl;cout << "最大子数组的和为: " << MaxSum << endl;}

遇到的问题及解决方法:

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

10.20

1

循环函数错误

设计阶段

编码

40min

查找资料,完善设计思路

描述:对如何实现最大子数组的查找思路不明确,查找并借阅相关资料,完善设计思路

10.20

2

函数错误

编码

编译

30min

反复调试,查找资料

描述:对函数编写不熟悉,bug太多,反复编译并查找错误

体会:

对如何查找二维整数数组最大子数组的和有了深刻的理解,对循环函数的使用也更加熟悉,但是,由于编程能力有限,无法解决算法时间复杂度的问题。上述编程的时间复杂度为O(n^3),不能达到时间复杂度为O(n)

的目标。

合作图片:

组内成员:张素颖,于芳娜

转载于:https://www.cnblogs.com/09-15/p/9822357.html

返回一个二维整数数组最大子数组的和相关推荐

  1. 返回一个二维整数数组中最大子数组的和(二人结对)

    题目:返回一个二维整数数组中最大子数组的和 要求:1.输入一个二维整型数组,数组里有正数也有负数. 2.二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值. ...

  2. 返回一个二维整数数组中最大联通子数组的和

    题目:返回一个二维整数数组中最大联通子数组的和. 要求:输入一个二维整形数组,数组里有正数也有负数.求所有子数组的和的最大值. 一.设计思想 先求出这个这个数组中的最大值,并定位,然后找出这个值周围的 ...

  3. 返回一个二维整数数组最大联通子数组的和(思路)

    返回一个二维整数数组最大联通子数组的和(思路) 题目: 输入一个二维整形数组,数组里有正数也有负数. 求所有子数组的和的最大值. 总体思路: 返回一个最大的二维联通子数组的思路总体上和二维首尾子数组相 ...

  4. 返回一个二维整数数组中的最大子数组的和

    一.课题要求: 输入一个二维整形数组,数组里有正数也有负数:           二维数组中连续的一个子矩阵组成一个子数组,没个子数组都有一个和: 如果数组A[0]--A[j-1]首尾相邻,允许A[i ...

  5. 课堂作业:返回一个二维整数组中最大子数组的和

    要求: 1.输入一个二维整形数组,数组里有整数也有负数. 2.二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值.要求时间复杂度为O(n). 结对编程要求: ...

  6. 返回一个二维整数数组中的最大的子数组和

    一.题目: 1.输入一个二维整形数组,数组里有正数有负数. 2.二维数组中连续的一个子矩阵组成一个子数组. 3.求所有子数组的和的最大值. 二.设计思想: .定义一个二维数组,使用二重循环对其进行赋值 ...

  7. 返回一个二维整数数组中最大子数组的和

    设计思路: 首先定义一个四行四列的二维数组 通过两个子函数实现,一个求一维最大子数组和,一个求相应列下标二维元素相加和并作比较 1.通过上次的一位数组求最大值,可以先求出每一行最大连续子数组的和 2. ...

  8. 课堂练习:返回一个二维数组中最大子数组的和

    1.题目: 返回一个二维数组中最大子数组的和. 2.要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子 ...

  9. 【IT】C语言函数中怎么返回一个二维数组

    C语言函数中怎么返回一个二维数组

最新文章

  1. Java_压缩与解压工具类
  2. Log4j每天、每小时、每分钟定时生成日志文件
  3. tree的使用,显示行号,find命令应用
  4. 简陋,山寨,Everything,桌面搜索,原理,源码
  5. 深入理解Java内存模型(七)——总结
  6. 三:Java之Applet
  7. 这些分布式事务的解决方案,你都知道吗
  8. 内部时钟和外部时钟隔离的Σ-Δ调制器
  9. 线程同步-事件内核对象
  10. hybrid7 宝马active_【图】宝马ActiveHybrid7系 动力节能完美结合_汽车之家
  11. 确保帐户安全 谈MySQL数据库安全解决方案
  12. 莎拉波娃美网新赛服亮相
  13. 互联网控制协议ICMP
  14. 求求你们了,别再写满屏的 if/ else 了!
  15. php709,深度爆料评测bt2020与bt709有什么区别?哪个好?良心点评实际情况
  16. 学生端极域课堂万能密码
  17. 多核处理器_胶水多核等于Low?处理器封装没有那么简单!
  18. Xftp7免费版(个人)下载链接
  19. 网课答案题库系统 内含接口使用
  20. List集合导出成Excel表格

热门文章

  1. python 学习DAY11
  2. 字符,字符串,int之间互相转换
  3. make and make bzImage
  4. 除了修改WEBCONFIG会导致WEB服务重启外,还有其他的什么操作会导致重启?
  5. [转]jQuery设计思想
  6. spring 概念理解(资料)
  7. begintrans返回值_SQL事务回滚 ADO BeginTrans, CommitTran 以及 RollbackTrans 方法
  8. javaweb之Filter详解
  9. linux系统证书存储,Linux系统下如何配置Nginx的SSL安全证书
  10. AUTOSAR从入门到精通100讲(四十八)-Lin通信协议栈分析两步走-LinTrcvLIN Driver