例如:给定一个m*m(0<n)的矩阵,请找到此矩阵的一个子矩阵,并且此子矩阵的各个元素的和最大,输出这个最大的值。或者给出一个柱形矩阵求最大子矩阵的最大值。

首先我们需要了解一下最大字段和问题。

最大子段和问题

给定一个长度为n的一维数组a,请找出此数组的一个子数组,使得此子数组的和

最大,其中

方法一:暴力求解法。略过

方法二:使用记忆递推方式进行计算。

求出所有从

位置的和,记录在数组
中。对于
区间和的计算可以使用
,比较所有的区间大小,结算最终结果。

方法三:动态规划。

表示从
的最大子段和。
的当前值只有两种情况:
  1. 最大子段一直连续到

  2. 为起点的子段,因为如果不是第一种情况,则情况一肯定为负,舍去。

由此我们得出

的状态转移方程为:

矩阵最大区域问题

首先我们需要明白子矩阵是在矩阵选取部份行、列所组成的新矩阵,而子矩阵所在的行列都是在紧挨着的。

例如

矩阵有n行m列,假设从
~
行,
~
列是最大子矩阵。

使用暴力求解的方法,时间复杂度是一个很大很大的值,所以考虑动态规划。

对于

矩阵,那么我们将从第
行到第
行的每一行中相同列的加起来,可以得到一个一维数组如下:

由此我们可以看出最后所求的就是此一维数组的最大子段和问题,到此我们已经将问题转化为最大子段和问题了。

将一个一维数组转化为二进制表示矩阵。例如_算法之矩阵最大区域问题相关推荐

  1. 一维数组转化为二维数组(java)

    由于经常在使用矩阵进行计算时,会首先将一维数组转为二维数组.因此,在这里记录一下,也希望对他人有帮助. package deal; /** author:合肥工业大学 管院学院 钱洋 *1563178 ...

  2. JS一维数组转化为三维数组有这个方法就够了

    今天在CSDN上问答区看到一个提问的小伙伴,是想要将一维数组转化为三位数组的需求,正好不是很忙,乐于助人的我立马给这位同学安排上 下面是后端同学返给我们的一维数组数据格式 [{'品牌': 'xiaom ...

  3. vue uniapp如何将一个一维数组变成一个二维数组?自定义切割数组长度

    如何将一个一维数组变成一个二维数组 lengthlsit(str,length) { // str:需要切割的数组,length需要切割的长度//获取要切割的数组的长度var length= pars ...

  4. c语言一维数组转化为二维矩阵,js将一维数组转化为二维数组

    遇到的问题: 后端返回的是一组一维数组,但是需要展示的格式是二维数组,常见的场景举例:后台返回10个长度的数组,需要分成3个一组展示在banner上. 例:[1,2,3,4,5,6,7,8,9,10] ...

  5. oracle 一维数转二维数组,js将一维数组转化为二维数组

    遇到的问题: 后端返回的是一组一维数组,但是需要展示的格式是二维数组,常见的场景举例:后台返回10个长度的数组,需要分成3个一组展示在banner上. 例:[1,2,3,4,5,6,7,8,9,10] ...

  6. 一维数组转化为二维数组

    #include <stdio.h> int main() { int i,j,k=0,arr[5]={0,1,2,3},arr2[2][2]={0};for(i=0;i<2;i++ ...

  7. 【小工具类】将一个十进制数转化成二进制/四进制/八进制/16进制

    先直接上完整代码: public class Test {public static void main(String[] args) {int num = 100;System.out.printl ...

  8. c++矩阵类_数据结构-JavaScript矩阵类的设计与实现

    矩阵是线性代数课学习的重点内容之一,也是线性代数常见工具之一,在应用数学.统计分析.计算机科学.计算机图像处理级物理等多学科中均有应用.矩阵主要是指数据的行列排列的形式,由行row与列col所组成,在 ...

  9. 矩阵乘法 算法训练 试题_蓝桥杯习题集_ 算法训练 矩阵乘法

    原文: 算法训练 矩阵乘法 时间限制:1.0s   内存限制:512.0MB 问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s, ...

最新文章

  1. 在想要放弃的时候想想是什么在支撑着你走到了这一步。
  2. Java多线程(十一)之线程池深入分析(上)
  3. 解决IE6下,给图片加上line-height属性不起作用的方法
  4. kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载 【转】
  5. MATLAB 检验矩阵中是否有某些元素 对元素统计
  6. Bailian2966 时区转换【时区计算】
  7. CTF中一点进制转换脚本记录
  8. 【转载】实用的人际关系经验
  9. ajax提交file文件,AjaxSubmit()提交file文件
  10. lopatkin俄大神精简中文系统Windows 10 1607 Enterprise LTSB 2016 x86-x64 ZH-CN 2x1
  11. arm-linux测网速工具,用Iperf工具测试网速和网络质量
  12. 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
  13. android设备如何苹果,手机怎么玩:如何像安卓一样管理iPhone文件?_苹果 iPhone 5_手机生活新闻-中关村在线...
  14. DDR5内存条容量计算
  15. 前端基础2——CSS3
  16. mysql 索引太长_修改Mysql索引长度限制
  17. 开发板ARM加FPGA架构运动控制卡 运动控制器 架构源码 原理图 资料包含此运动控制卡原理图,PCB图
  18. opencv入门之数米粒
  19. 商业级4G代理搭建指南【搭建篇之Docker版】
  20. PyQt(Python+Qt)学习随笔:Qt Designer中怎么给toolBar添加按钮

热门文章

  1. C# Unity编程终极指南
  2. 虚幻引擎5–环境设计学习教程
  3. github上删除一个仓库
  4. 返回一个二维整数数组中的最大的子数组和
  5. angularjs 学习笔记 简单基础
  6. 有关Adobe公司的PostScript语言授权问题
  7. msys下产生dll的导入库
  8. python数据结构与算法:双向链表
  9. NDK JNI方式读写Android系统的demo(二)
  10. asp.net2.0导出pdf文件完美解决方案【月儿原创】