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

代码如下:

#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. 大气散射的demo

  2. python的__future__特性

    使用python的__future__特性, __future__是在旧版本的python中提供了新版python的特性. 1) 在python2中相除返回浮点数,在python3中默认返回浮点数 & ...

  3. Windows Server 2008 R2 域控DOS命令

    net user                                                         #查看本地用户 net  localgroup             ...

  4. mysql用户密码修改,用户添加、删除及设置权限

    一下的示例所用用户名和密码为:test,111111 Mysql密码修改: Mysql修改密码需要root的权限,先执行mysql -uroot -p(密码); 1)使用set password方式来 ...

  5. ACM-ICPC LA 4329 Ping pong(树状数组)

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  6. Displaying Data in a Chart with ASP.NET Web Pages (Razor)

    This article explains how to use a chart to display data in an ASP.NET Web Pages (Razor) website by ...

  7. C++笔记(一)

    一.动态数组 一般我们定义数组都是用下面的方式: int str[100]; 但对于一些需要手动输入数组大小的情况,这种定义方式就行不通了.因为上面这种方式要求事先知道数组大小,并且给数组中括号中必须 ...

  8. Java中Comparable和Comparator接口区别分析

    Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...

  9. R 操作矩阵和计算SVD的基本操作记录

    在R中可以用函数matrix()来创建一个矩阵,应用该函数时需要输入必要的参数值. > args(matrix) function (data = NA, nrow = 1, ncol = 1, ...

  10. scale配合过渡的时候bug

    使用scale的时候注意两点 1:scale(1)的时候尽量图片的 width==naturalWidth bug表现为过渡生效时候图片变模糊 2:scale在过渡前和过渡后的计算后的width和he ...