我是靠谱客的博主 干净爆米花,最近开发中收集的这篇文章主要介绍mysql返回二维数组_课堂练习:返回一个二维数组中最大子数组的和,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、题目:

返回一个二维数组中最大子数组的和。

2、要求:

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

二维数组首尾相接,象个一条首尾相接带子一样。

数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

求所有子数组的和的最大值。要求时间复杂度为O(n)。

3、结对开发要求:

两人结对完成编程任务。

一人主要负责程序分析,代码编程。

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

发表一篇博客文章讲述两人合作中的过程、体会以及如何解决冲突。

二、设计思路

1、输入一个既有正数又有负数的数组,并把它变为环形二维数组。

2、声明一个Sum()函数,用来计算子数组的和。

3、用两个坐标,左上角为(x1,y1),右下角为(x2,y2),这样就可以实现在遍历数组的时候确定子数组,并调用Sum()函数计算出最大值,并用坐标标记位置输出。

三、代码

#include

int Array[100][100];

int Sum(int x1,int y1,int x2,int y2) //计算子数组和的函数

{

int sum=0;

for(int i=x1;i

{

for(int j=y1;j

{

sum+=Array[i][j];

}

}

return sum;

}

int main()

{

int row;

int col;

int i,j,x1,x2,y1,y2;

/**********************************/

cout<

cin>>row;

cout<

cout<

cin>>col;

cout<

/************************************/

int Arr[100][100]; //存放键盘输入的数组

/*******输入数组内元素**************/

cout<

for(i=0;i

{

for(j=0;j

{

cin>>Arr[i][j];

}

}

/*******输出数组内元素*************/

cout<

for(i=0;i

{

for(j=0;j

{

cout<

}

cout<

}

/*******生成二维环形数组***********/

for(i=0;i

{

for(j=0;j

{

Array[i][j] = Arr[i][j];

Array[i][j+col] = Arr[i][j];

}

}

/*for(i=0;i

{

for(j=0;j<2*col-1;j++)

{

cout<

}

cout<

}*/

/************************************/

int flag1,flag2,flag3,flag4;

flag1=flag2=flag3=flag4=0;

int max=Array[0][0];

for(x1=0;x1

{

for(y1=0;y1

{

for(x2=x1+1;x2<=row;x2++)

{

for(y2=y1+1;y2<=2*col;y2++)

{

if((y2-y1) > col)

{

break;

}

if(Sum(x1,y1,x2,y2)>max)

{

max = Sum(x1,y1,x2,y2); //用两个坐标(flag1,flag2),(flag3,flag4)表示最大子数组

flag1=x1;

flag2=y1;

flag3=x2;

flag4=y2;

}

}

}

}

}

cout<

for(i=flag1;i

{

for(j=flag2;j

{

cout<

}

cout<

}

cout<

return 0;

}

四、运行结果

lazy.gif

五、结对认照片

lazy.gif

最后

以上就是干净爆米花为你收集整理的mysql返回二维数组_课堂练习:返回一个二维数组中最大子数组的和的全部内容,希望文章能够帮你解决mysql返回二维数组_课堂练习:返回一个二维数组中最大子数组的和所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部