博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
首尾相连的二维数组最大子数组求和
阅读量:5064 次
发布时间:2019-06-12

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

题目:返回一个二维整数数组中最大子数组的和。要求:输入一个二维整形数组,数组里有正数也有负数。二维数组首尾相接,象个一条首尾相接带子一样。

n数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。
 

结对编程要求: 两人结对完成编程任务。 一人主要负责程序分析,代码编程。

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

                   发表一篇博客文章讲述两人合作中的过程、体会以及如何解决冲突(附结对开发的工作照)。

结对开发过程:

    这次的编程开发是基于上次的以为数组,我和我的搭档@快乐的小菜鸟开始了认真的讨论,再结合课堂上的同学讨论,如何能在二维数组原有的基础上,加上首尾相连这个条件,同时降低时间复杂度,这种方法的大概思想是:遍历数组里面的每一个数将第一个数变为最后一个数,具体算法 a[i][j-1]=a[i][j],这样又变成了一个新的二维数组,输出每个数组的最大子数组和,然后比较每个输出的和,找出最大的数:

 

具体代码:

#include 
using namespace std;int maxSubArray(int **a,int n,int m){ int **p=new int*[n]; int i,j; if(m==0||n==0) return 0; //计算p[i][j] for(i=0;i
=0;k--) { if(temp<0) temp=0; if(i==0) { if(k==0) temp+=p[j][k]; else temp+=p[j][k]-p[j][k-1]; } else { if(k==0) temp+=p[j][k]-p[i-1][k]; else temp+=p[j][k]-p[j][k-1]-p[i-1][k]+p[i-1][k-1]; } if(ans

  

截图:

 

感想:开始没有理解首尾相连的二维数组是怎么连接的,一行一行还是一列一列的,最后才明白: 1 2 3 转化为:3  1  2,参考以前的一位数组首尾相连,终于做了出来。

                                                                                                                         4 5 6             6  4  5

 

团队合作图:

转载于:https://www.cnblogs.com/TSbj/p/4395711.html

你可能感兴趣的文章
Git学习笔记(2)-初探Git
查看>>
用JS把复选框做成单选框,左显示div,右隐藏div
查看>>
今天调出来的关于cello的bug
查看>>
[zz]LXC(Linux containers)配置文件简介
查看>>
bzoj2763 [JLOI]飞行路线 分层图最短路
查看>>
Missing letters
查看>>
Virtual Machine Converter 3.0 发布了
查看>>
强连通 HDU 3639
查看>>
Python 3语法小记(九) 异常 Exception
查看>>
DSP TMS320C6000基础学习(4)—— cmd文件分析
查看>>
角色权限etmvc+jQuery EasyUI+combobox多值操作实现角色授权
查看>>
Prototype Pattern
查看>>
前端工具----iconfont
查看>>
过完年了,要不要辞职?
查看>>
每天一个linux命令(57):ss命令
查看>>
Javascript获得当前网页页面详细地址的实现
查看>>
tcp ip协议讲解
查看>>
linux内核系统调用和标准C库函数的关系分析
查看>>
nginx log 错误502 upstream sent too big header while reading response header from upstream
查看>>
CGI,FastCGI,PHP-CGI与PHP-FPM(转)
查看>>