之前做过最大一维数组子数组的和的题目,现在将数组扩展成二维:

代码如下:

#include<iostream>
#define null -858993460
using namespace std; void main()
{
int arr[]={,,,-,,-,};
int arr2[]={-,-,-,-};
int arr3[]={};
int arr4[]={,,};
int arr5[];
int a[][]={{,,-,,-,},{,-,,,-,-},{-,-,-,,,-}};
int b[][];
int c[][]={{-,-,-},{-,-,-},{-,-,-}}; int yiwei_maxsub_list(int list[],int length);
int erwei_maxsub_list(int list[][],int x,int y); cout<<"一维数组:"<<endl;
cout<<yiwei_maxsub_list(arr,)<<endl;
cout<<yiwei_maxsub_list(arr2,)<<endl;
cout<<yiwei_maxsub_list(arr3,)<<endl;
cout<<yiwei_maxsub_list(arr4,)<<endl;
cout<<yiwei_maxsub_list(arr5,)<<endl; cout<<"二维数组:"<<endl;
cout<<erwei_maxsub_list(a,,)<<endl;
cout<<erwei_maxsub_list(b,,)<<endl;
cout<<erwei_maxsub_list(c,,)<<endl; } int yiwei_maxsub_list(int list[],int length)
{
int a[]={};
int max;
int i,j;
int k=; if(list==NULL||length==)
{
cout<<"error!inter is null!";
return ;
} for(i=;i<length;i++)
{
a[k]=list[i];
for(j=i;j<length;j++)
{
a[k+]=a[k]+list[j+];
k++;
}
}
max=a[];
for(i=;i<k;i++)
{
if(max<a[i])
{
max=a[i];
} }
return max;
} int erwei_maxsub_list(int list[][],int x,int y)
{//int list[][100]={{5,6,-3,8,-9,2},{1,-12,20,0,-3,-5},{-9,-7,-3,6,7,-1}};x=3,y=6
int a[][]={};
int b[][]={};
int max,i,j,n;
int t,k;//t行扩展后的,k列扩展
if(list==NULL||x==||y==)//异常处理
{
cout<<"error!inter is null!";
return ;
} for(n=;n<x;n++)//n层(x)
{
k=;
for(i=;i<y;i++)
{
a[n][k]=list[n][i];
for(j=i;j<y;j++)
{
a[n][k+]=a[n][k]+list[n][j+];
k++;
}
}
}
t=k;
for(n=;n<t;n++)//n列(t)
{
k=;
for(i=;i<x;i++)
{
b[k][n]=a[i][n];
for(j=i;j<x;j++)
{
b[k+][n]=b[k][n]+a[j+][n];
k++; }
}
} max=list[][]; for(i=;i<k;i++)
{
for(j=;j<t;j++)
if(max<b[i][j])
{
max=b[i][j];
}
}
return max; }

截图:

时间:用时,在一维数组的前提下1小时;

方法:将二维数组参数传入函数后,函数将数组先进行行扩展,每行记录单独一行的子数组,然后列扩展,将原来的二维数组扩展为子数组和的数组,然后遍历扩展后的数组找到最大值;这样时间复杂度是(m+n)².

总结:这其实体现了敏捷开发中的问题,用户的需求不断改变,团队的效率建立在过去的基础上,迭代开发的效率会比较高。这也是现在软件开发的主流,需要团队合作,代码规范,程序结构完整,健壮性强等等。再今后的软件工程学习和运用中深入体会。

查找二维数组list[][]中的最大的子数组的和的更多相关文章

  1. 【剑指offer】二分查找二维数组

    1 2 3 4 5 6 7 8 9 3 3 1 2 3 4 5 6 7 8 9 10 3 3 12 2 3 4 5 6 7 8 9 10 例子输出: Yes No No 时间限制:1 秒 内存限制:3 ...

  2. PHP使用array_filter查找二维数组中符合字段和字段值的数据集合

    1.方法: /** * 获取符合字段和字段值的数组集合 * @param array $data 待过滤数组 * @param string $field 要查找的字段 * @param $value ...

  3. [软件工程] 查找二维数组最大子数组的之和 郭莉莉&李亚文

    一. 在主函数中实现二维数组的输入. 代码主要函数maxson(),主要利用for()循环先查找出最大字数组的四角的坐标xmin,xmax,ymin,ymax来确定最大子数组, 在循环中算出之和,编写 ...

  4. [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组

    1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一 ...

  5. C#学习笔记04--排序/查找/二维数组/交叉数组

    一. 冒泡排序(重点) 思路:  每次比较把较小的放在前面, 大的放到后面; 图解:下图是最坏情况下的排序 ` 冒泡排序m个元素, 就有(m-1)趟排序, 第一趟m-1次, 第二趟 m-2次....  ...

  6. C#6 冒泡 折半查找 二维数组

    人类思维--计算机逻辑思维 逻辑思维--代码实现 写书法: 描红--临摹--碑贴--自成一体--草 章节复习: 数组:一维,二维,多维 一维:豆角.连续,同一类型. 定义:数据类型[] 数组名=new ...

  7. 《剑指offer》查找二维数组内元素 c++

    在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. cl ...

  8. PHP 查找二维数组中是否有指定字符串的字段

    Array ( ] => Array ( [content] => 您提交了订单,请等待系统确认 :: [operator] => 客户 ) ] => Array ( [con ...

  9. 剑指Offer面试题:2.二维数组中的查找

    一.题目:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

随机推荐

  1. cookie、session与token

    一.详述概念 1.Cookie机制 cookie机制是采用在客户端保持状态的方案(cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力).cookie的使用是由浏览器按照一定的原则在后台自 ...

  2. FTP客户端连接时中文乱码问题处理

    1.问题场景: 使用FileZilla连接FTP时发现中文字符有乱码,如题: 2. 分析问题: 主要是字符问题引起的:FileZilla是自动检测字符集的,会导致部分中文字符集显示异常: 3.解决方法 ...

  3. Mongodb在windows下的安装和启动

    在windows下安装的参考官方地址:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/ Mongodb的安装与启 ...

  4. Infinite V2 Release Note

    游戏地址 PLAY 玩法说明 - WASD 控制角色移动 - 按下J键 进入攻击模式(WASD 可以继续移动) 更新内容 - 完成角色锁定目标后边移动边攻击 开发心得 状态机的设计 最初的设计很乱, ...

  5. Linux上 .vimrc文件

    在Linux上面对VIM编辑器的格式的设置通常可以提升工作效率,下面对工作机器上的.vimrc文件的内容进行一总结,以备后续的查询 set smarttab set tabstop=4 set shi ...

  6. kali安装谷歌浏览器的方法及启动问题的解决

    在kali上安装谷歌浏览器的时候,遇到了很多问题,经过不懈努力,终于解决,现在把方法总结一下,希望对遇到同样问题的人能有一定帮助.这是给最白的小白参考的,大牛勿喷哈. 说明:我是在kali rolli ...

  7. hdu 2037 今年暑假不AC

    今年暑假不AC Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  8. cassandra.yaml介绍

    cluster_name 集群的名字,默认情况下是TestCluster.对于这个属性的配置可以防止某个节点加入到其他集群中去,所以一个集群中的节点必须有相同的cluster_name属性. list ...

  9. ECshop后台角色权限的添加和分配

    1.在权限文件中配置 2.在需要加权限的文件中加入权限. 例如:d:\ecshop\admin\user_account.php 3.在数据库表 ecs_admin_action中配置 4.会员权限 ...

  10. ClientScript.RegisterStartupScript 不起作用

    asp.net webform 使用 ClientScript.RegisterStartupScript 不起作用 form 加上 runat="server",ok