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

本文共 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

你可能感兴趣的文章
Decommissioning a Domain Controller 降域控
查看>>
Character中的奇葩
查看>>
c++书籍推荐
查看>>
轻松监听Azure service health 状态
查看>>
获取SQL SERVER某个数据库中所有存储过程的参数
查看>>
在Linux下编译安装Apache2(2)
查看>>
Method Swizzling 处理一类简单的崩溃
查看>>
AngularJS学习!
查看>>
在Eclipse中搭建Python Django
查看>>
struts国际化
查看>>
Laravel 5.0 - Middleware (中间件)
查看>>
文件特殊权限及facl
查看>>
我的友情链接
查看>>
Android按两次返回键退出应用
查看>>
第一章:认识Redhat Linux
查看>>
文本查看指令
查看>>
我的友情链接
查看>>
android开源项目框架大全:《IT蓝豹》
查看>>
boost库
查看>>
LeetCode——Longest Consecutive Sequence
查看>>