博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结对开发——求环形二维数组最大子矩阵和的问题
阅读量:5927 次
发布时间:2019-06-19

本文共 2440 字,大约阅读时间需要 8 分钟。

一、题目要求

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

二维数组首尾相接,象个一条首尾相接带子一样。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。
要求时间复杂度为O(n)题目:返回一个二维整数数组中最大子数组的和

二、解题思路

      这次就在以前的基础上进行修改,先对二维数组进行了重构,形成一个环状二维数组,然后再用求二维数组子矩阵最大和的方法求得最终结果。

三、程序代码

 

1 #include "stdafx.h"  2 #include
3 int main(int argc, char* argv[]) 4 { 5 int i,j; 6 int a[3][5]={
{
1,-2,3},{
1,-3,2},{
4,-4,5}}; 7 int b[3][5]; 8 for(i=0;i<3;i++) 9 { 10 for(j=0;j<2;j++) 11 a[i][j+3]=a[i][j]; 12 } 13 int max=a[0][0]; 14 cout<<"初始二维数组为:"<
=0&&b[i][j-1]>=0) 70 { 71 if(b[i][j-1]>=b[i-1][j]) 72 { 73 b[i][j]=b[i][j-1]+a[i][j]; 74 } 75 else 76 { 77 b[i][j]=b[i-1][j]+a[i][j]; 78 } 79 } 80 else if(b[i-1][j]>=0&&b[i][j-1]<=0) 81 { 82 b[i][j]=b[i-1][j]+a[i][j]; 83 } 84 else if(b[i-1][j]<=0&&b[i][j-1]>=0) 85 { 86 b[i][j]=b[i][j-1]+a[i][j]; 87 } 88 else 89 { 90 b[i][j]=a[i][j]; 91 } 92 } 93 else 94 { 95 if(b[i-1][j]>=0&&b[i][j-1]>=0) 96 { 97 b[i][j]=a[i][j]+b[i-1][j]+b[i][j-1]-b[i-1][j-1]; 98 } 99 else if(b[i-1][j]>=0&&b[i][j-1]<=0)100 {101 b[i][j]=a[i][j]+b[i-1][j]-b[i-1][j-1];102 }103 else if(b[i-1][j]<=0&&b[i][j-1]>=0)104 {105 b[i][j]=a[i][j]+b[i][j-1]-b[i-1][j-1];106 }107 else108 {109 b[i][j]=a[i][j];110 }111 }112 }113 }114 cout<<"子矩阵的和数组为:"<
max)129 max=b[i][j];130 }131 }132 cout<<"最大子矩阵和为:"<
<

四、结果截图

五、心得体会

       这次的合作我们俩个的角色互换了,陆宇为驾驶员,我做了领航员,这次的题目,是前面两个题目的组合,求二维数组最大子矩阵的和,求环形一维数组的最大子数组的和,环形一维时,我们采用了跨越首尾和不跨越首尾两种情况,发现这种方法不适用于二维,所以采用了重构数组的方法,转化成非环形,然后求二维最大子数组的和。开始在循环条件那儿遇到了问题,后来我们两个一起解决了,这次合作让我体会到了搭档的重要性,总之,这次结对开发很成功,以后继续努力。

转载于:https://www.cnblogs.com/maximumminimum/p/4385510.html

你可能感兴趣的文章
JVM内存区域的划分(内存结构或者内存模型)
查看>>
nginx安装使用
查看>>
【hash】什么是hash,什么是哈希,什么是hash散列,什么是hash一致性算法【关于hash的详解】...
查看>>
基于 HTML5 的 WebGL 3D 版俄罗斯方块
查看>>
Java中List集合去除重复数据的方法
查看>>
开源通用型渲染工具-SwiftShader--OpenGL的替代者
查看>>
TI 实时操作系统SYS/BIOS使用总结
查看>>
Java运行时,指定程序文件的编码
查看>>
@autoclosure-可以让表达式自动封装成一个闭包
查看>>
Intellij IDEA 发布后的项目在哪里
查看>>
(原創) 如何编译SystemC library? (C/C++) (SystemC) (VC++) (IC Design)
查看>>
英文简历中的自我评价
查看>>
电子书下载:3D Graphics with XNA Game Studio 4.0
查看>>
浅谈QT中窗口刷新事件
查看>>
sengmsg()和recvmsg()的综合应用
查看>>
每天2分钟平板支撑Plank,锻炼核心肌群,远离背疼痛
查看>>
『原创』+『转载』配置模拟器网络环境(访问局域网)Step by Step!
查看>>
VS2010 常用快捷键
查看>>
ubuntu mysql 安装配置与彻底删除 (转)
查看>>
lock
查看>>