一,题目:

求一个矩阵中最大的二维矩阵(元素和最大).如:
1 2 0 3 4
2 3 4 5 1
1 1 5 3 0
中最大的是:
4 5
5 3
要求:(1)写出算法;(2)分析时间复杂度;(3)用C写出关键代码

二,分析:

假设最大子矩阵的结果为从第r行到k行、从第i列到j列的子矩阵,
如下所示(ari表示a[r][i],假设数组下标从1开始):

| a11 …… a1i ……a1j ……a1n |
  | a21 …… a2i ……a2j ……a2n |
  .....

| ar1 …… ari ……arj ……arn |    第r行 . . .
  ..........                            |  
                                  V
  | ak1 …… aki ……akj ……akn |   第k行 . . .

.....
  | an1 …… ani ……anj ……ann |

那么我们将从第r行到第k行的每一行中相同列的加起来,可以得到一个一维数组如下:
 (ar1+……+ak1, ar2+……+ak2, ……,arn+……+akn)
 由此我们可以看出最后所求的就是此一维数组的最大子段和问题,
到此我们已经将问题转化为上面的已经解决了的问题了。

三,源码(以下源码是求n行n列矩阵最大子矩阵代码)

#include <iostream> using namespace std; int maxSubArray(int a[],int n) { int b=0,sum=a[0]; for(int i=0;i<n;i++) { if(b>0) b+=a[i]; else b=a[i]; if(b>sum) sum=b; } return sum; } int maxSubMatrix(int array[][3],int n) { int i,j,k,max=0,sum=-100000000; int b[3]; for(i=0;i<n;i++) { for(k=0;k<n;k++)//初始化b[] { b[k]=0; } for(j=i;j<n;j++)//把第i行到第j行相加,对每一次相加求出最大值 { for(k=0;k<n;k++) { b[k]+=array[j][k]; } max=maxSubArray(b,k); if(max>sum) { sum=max; } } } return sum; } int main() { int n=3; int array[3][3]={{1,2,3},{-1,-2,-3},{4,5,6}}; cout<<"MaxSum: "<<maxSubMatrix(array,n)<<endl; }

转载于:https://www.cnblogs.com/JPAORM/archive/2012/04/23/2510004.html

【100题】三十五 求一个矩阵中最大的二维矩阵(元素和最大)相关推荐

  1. 机器学习之数学基础(二)~数组、向量、矩阵、向量空间、二维矩阵

    1. 概述 在学习机器学习(machine learning)或模式识别(pattern recognition)过程中,我经常会困惑于向量.数组和矩阵这三种数据结构,而在学习张学工教授<模式识 ...

  2. 三十五、深入Java中的泛型(下篇)

    @Author:Runsen @Date:2019年10月26日 17:10:34 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件 ...

  3. np中meshgrid生成二维矩阵matplotlib中imshow生成图形

    numpy中meshgrid函数接收两个一维数组,并产生两个二维矩阵 import numpy as np points=np.arange(-5,5,0.01) #生成1000个间隔相等的点 xs, ...

  4. python fun函数、求4x4整型数组的主对角线元素的和_求一个4×4的整型二维数组主对角线元素之和...

    展开全部 下面是Java语言编写一个计算4*4整型数组对角线636f70793231313335323631343130323136353331333431353338元素和的代码: import j ...

  5. numpy高级索引(二维矩阵的索引是二维矩阵)

    目录 1.问题描述 2.查阅资料 3.实验 1.问题描述 最近在看语义分割的源码,但是预测阶段有一行代码看的我头大,不知道在索引些什么东西.后来经过查阅资料和实验发现这是numpy的高级索引,故写这篇 ...

  6. java 二维矩阵_Java如何输入二维矩阵并存储到二维数组中

    展开全部 最不严谨的写法(但是可62616964757a686964616fe59b9ee7ad9431333335326163用)下列方法可以不需知道二维数组的宽度和长度,但是不能直接保存,而是输入 ...

  7. 程序员面试100题之十五:数组分割

    一.题目概述:有一个没有排序,元素个数为2N的正整数数组.要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近. 假设数组A[1..2N]所有元素的和是SUM.模仿动态规划解0-1背包问题的 ...

  8. excel实战应用案例100讲(十五)-在Excel中对Python进行操作完美工具PyXLL-Jupyter

    Excel和Jupyter Notebok都是我每天必用的工具,而且两个工具经常协同工作,一直以来工作效率也还算不错.但说实在,毕竟是两个工具,使用的时候肯定会有一些切换的成本. 最近,在逛GitHu ...

  9. 第三十五 ASP.NET和Web服务(二)

    *摘要 .异步Web服务 .Web服务中的事务处理 .Web服务中的缓存技术 .WSE技术 * Web服务 .Web Service是在Internet上进行分布式计算的基本构造块. .WebServ ...

最新文章

  1. 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])...
  2. 【PAT乙级】1067 试密码 (20 分)
  3. 斑马888t打印机墨盒安装_硒鼓?墨盒?究竟哪个才是打印机的“灵魂伴侣”?...
  4. flink入门_Flink入门:读取Kafka实时数据流,实现WordCount
  5. SpringBoot Scheduled Cron表达式范例记录
  6. java textfield事件_java – 以编程方式触发JTextField中的键事件...
  7. Windows Server 2003 R2中的DFS复制与管理
  8. 计算机病毒的危害与防范
  9. SCI论文写作中常用的连接词和短语
  10. 合肥工业大学计算机学院任恒,合肥工业大学计算机与信息学院导师教师师资介绍简介-△张玉红...
  11. DHTMLET-Cascading Style Sheet 2.0
  12. 胡说八道设计模式—观察者模式
  13. 蓝桥杯之单片机设计与开发(18)——模数转换A/D与数模转换D/A
  14. 980. 不同路径 III
  15. VSCode 壁纸插件 背景播放视频插件
  16. 把牌分成两堆,让每堆面朝上的牌数目相同
  17. java毕业设计SEOUL设计师品牌代购商城Mybatis+系统+数据库+调试部署
  18. 算法2.4.24:查找链表二叉树节点
  19. 交通灯控制系统设计左转倒计时protues仿真的c语言程序,交通灯控制系统设计
  20. 大华NVR设备接分别入宇视摄像机Onvif和RTSP主子码流的方案说明

热门文章

  1. [批处理]NetstatFilter快速查找端口被占用问题
  2. xml解析总结-常用需掌握
  3. XSLT的处理模型(1)
  4. ubuntu使用docker的Huginn上手记
  5. map函数的用法python,详解Python map函数及Python map()函数的用法
  6. grpc java 泛型_关于使用GRPC遇到的BUG-Go语言中文社区
  7. sr锁存器 数电_数字电路第5章(1SR锁存器)_2.ppt
  8. centos7启动root账户_新手小白使用vm安装Linux系统centos7虚拟机详细教程
  9. 比_thread高级的threading模块,对比释放锁例子
  10. exc导入mysql phpcms_PHP如何将EXCEL导入MYSQL,急!!!急!!哪位大师能帮帮忙啊,给个详细代码...