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

代码如下:

#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. Peter Norvig:自学编程,十年磨一剑

    若要在某一领域内达到专家级的水平,其关键在于"审慎地重复",也就是说,并非是机械地,一遍又一遍地练习,而是要不断地挑战自我,试图超越自身当前的水平,通过不断的尝试挑战,并在尝试的过 ...

  2. java 读写文件

    1. 读文件 import java.io.*; import java.util.*; public class test { public void test_readfile(String fi ...

  3. sqlserver日志的备份与还原

    ----------完整备份与还原----------                --完整备份数据库--backup database studb to disk='e:\stu.bak'back ...

  4. ElasticSearch 入门笔记1

    1. 起步 1. 建demo工程,看文档,做典型demo 2. 资源列表: http://es.xiaoleilu.com/010_Intro/10_Installing_ES.html 3. 启动: ...

  5. IOS 支持HTTPS调用(AFNetWorking框架)

    1.ATS开关开启2.manager.securityPolicy.allowInvalidCertificates = YES; manager.securityPolicy.validatesDo ...

  6. C正则库做DNS域名验证时的性能对比

    C正则库做DNS域名验证时的性能对比   本文对C的正则库regex和pcre在做域名验证的场景下做评测. 验证DNS域名的正则表达式为: "^[0-9a-zA-Z_-]+(\\.[0-9a ...

  7. ios-深度解析二维码的生成与使用

    利用一个小demo来对二维码进行学习,总共四个界面(主界面,生成二维码界面,识别二维码界面,扫描二维码界面)   一.二维码的介绍   1.什么是二维码?        二维条码/二维码是用某种特定的 ...

  8. Thinkstation center M8600t装RHEL7不能联网,网卡驱动没装问题

    Thinkstation center M8600t装RHEL7时不能联网,配置ip也不可以,后来发现网卡驱动没有安装.可以通过装网卡驱动的方式解决问题,解决方法如下: root登录 lspci |  ...

  9. Ajax UI方面的处理方式

    一种方式: 从远程直接获取HTML加载到本地 第二种方式从远程获取JSON,到本地使用JS处理数据. var html = "<table cellspacing=\"0\& ...

  10. Windows Phone 十四、磁贴通知

    磁贴(Tile) Windows Phone 磁贴种类: 小尺寸 SmallLogo:71x71: Square71x71 中等 Logo:150x150: Square150x150 宽 WideL ...