浅谈最大化子矩阵问题

文章目录1. 矩阵2. 最大化子矩阵问题3. 解法-- 3.1. 初级解法

1 矩阵

严格地说,这里的矩阵并不是严格要求的;确切地说只是二位数组或者矩形排列的一些物体(items),但是为了方便表达,就使用矩阵这一名词了.

我们定义一个矩阵$\text{Matrix}[r,c]$是一个r行c列的二维阵列(不一定是数组),其中将$\text{Matrix}[r_1]$称为一行,或$\text{Matrix}[r_1,1..c](1\le r_1\le r)$,将$\text{Matrix}[1..r,c_1](1\le c_1\le c)$称为一列.
我们定义一个矩阵$\text{Matrix}[r,c]$中的连续一块$\text{Sub_Matrix}[r_1..r_2,c_1..c_2](1\le r_1\le r_2\le r,1\le c_1\le c_2\le c)$为$\text{Matrix}[r,c]$的一个子矩阵$\text{Sub}\left( \text{Matrix},r_1,r_2,c_1,c_2\right)$
      / 1 0 1 1 0 1 \
      | 0 1 1 0 0 0 |
M_1 = | 0 1 0 1 0 0 |
      | 1 1 0 0 1 0 |
      \ 1 1 0 0 1 1 /
M_2 = / 0 1 0 \ = Sub(M_1,3,4,3,5)
      \ 0 0 1 /
M_2 是 M_1 的子矩阵
(其中灰色背景+下划线部分).

 2 最大子矩阵问题

设M1=

1 0 1 1 0 1
0 0 0 1 0 0
0 0 1 0 0 0
1 0 0 0 0 0
0 1 0 0 1 1
1 1 1 0 0 0

其中,我们将1称为障碍点,

时间: 2024-10-25 12:23:55

浅谈最大化子矩阵问题的相关文章

浅谈二维中的树状数组与线段树

一般来说,树状数组可以实现的东西线段树均可胜任,实际应用中也是如此.但是在二维中,线段树的操作变得太过复杂,更新子矩阵时第一维的lazy标记更是麻烦到不行. 但是树状数组在某些询问中又无法胜任,如最值等不符合区间减法的询问.此时就需要根据线段树与树状数组的优缺点来选择了. 做一下基本操作的对比,如下图. 因为线段树为自上向下更新,从而可以使用lazy标记使得矩阵的更新变的高校起来,几个不足就是代码长,代码长和代码长. 对于将将矩阵内元素变为某个值,因为树状数组自下向上更新,且要满足区间加法等限制

浅谈自然语言处理基础(下)

命名实体识别 命名实体的提出源自信息抽取问题,即从报章等非结构化文本中抽取关于公司活动和国防相关活动的结构化信息,而人名.地名.组织机构名.时间和数字表达式结构化信息的关键内容,所以需要从文本中去识别这些实体指称及其类别,即命名实体识别和分类. 21世纪以后,基于大规模语料库的统计方法成为自然语言处理的主流,以下是基于统计模型的命名实体识别方法归纳: 基于CRF的命名实体识别方法 基于CRF的命名实体识别方法简便易行,而且可以获得较好的性能,广泛地应用于人名.地名和组织机构等各种类型命名实体的识

关系型数据库表结构设计规范-浅谈(转)

数据库表结构设计规范-浅谈,为啥是浅谈呢,因为主要的观点还是来自原微信公共账号的一篇文章,稍微加了一些自己的看法. 谁来进行数据库的设计? 肯定是具体的开发工程师来进行,开发同学的话,第一业务熟悉度比较高,第二结合OO和ORM的思想,能有比较好的运用关系型数据库的特性.如果是DBA同学的话,虽然对于数据库本身了解比较多,但是对于业务了解较少,很难有比较客观的设计.但是业务上线或者运行期间,需要DBA同学能够重度的加入进来,针对一些性能点和不合理的点进行优化,同事也可以在上线前,针对SQL进行re

浅谈MVC

浅谈MVC What is MVC? MVC与模板概念的理解:MVC(Model View Controller)模型-视图-控制器 MVC本来是存在于Deskt op程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC 的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如一批统计数据你可以分别用柱状图.饼图来表示.C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新. 模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Small

浅谈双线程dp (nyoj61 nyoj712)经典【传字条】和【探 寻 宝 藏】

浅谈双线程dp 先看问题: 传纸条(一) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是,他们可以通过传纸条来进行交流.纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n).从小渊传到小轩的纸条只可以向下或者向右传递,从小轩

浅谈未来网站的构建

前言: 话说"合久必分,分久必合",从过去的几年来看我们现在正处于一个资源.信息技术和服务等整合的时代,从行业到技术,从电子商务到企业资源,那么对于现存的网站如何进行整合,未来的网站将以什么形式展现在人们面前,与现在相比又给人们带来哪些不同的用户体验呢,本文作者站在个人角度,结合近年来出现的技术,对于未来的网站发表下个人见解. 随着各行业信息化进程的加快,各种功能的网站应运而生,工作.购物.学习.娱乐.医疗.金融和社交等网站都层出不穷,由于这些网站的出现,给人们生活带来很大的方面, 人

浅谈软件性能测试中关键指标的监控与分析

浅谈软件性能测试中关键指标的监控与分析 一.软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø  评价系统当前性能,判断系统是否满足预期的性能需求. Ø  寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题. Ø  判定软件系统的性能表现,预见系统负载压力承受力,在应用部署之前,评估系统性能. 而对于用户来说,则最关注的是当前系统: Ø  是否满足上线性能要求? Ø  系统极限承载如何? Ø  系统稳定性如何? 因此,针对以上性能测试的目的以及用户的关注点,要达到以上

浅谈数据库并发控制 - 锁和 MVCC

在学习几年编程之后,你会发现所有的问题都没有简单.快捷的解决方案,很多问题都需要权衡和妥协,而本文介绍的就是数据库在并发性能和可串行化之间做的权衡和妥协 - 并发控制机制. 如果数据库中的所有事务都是串行执行的,那么它非常容易成为整个应用的性能瓶颈,虽然说没法水平扩展的节点在最后都会成为瓶颈,但是串行执行事务的数据库会加速这一过程:而并发(Concurrency)使一切事情的发生都有了可能,它能够解决一定的性能问题,但是它会带来更多诡异的错误. 引入了并发事务之后,如果不对事务的执行进行控制就会

浅谈Windows API编程

WinSDK是编程中的传统难点,个人写的WinAPI程序也不少了,其实之所以难就难在每个调用的API都包含着Windows这个操作系统的潜规则或者是windows内部的运行机制…… WinSDK是编程中的传统难点,曾经听有一个技术不是很好的朋友乱说什么给你API谁都会用,其实并非那么简单,个人写的WinAPI程序也不少了,其实之所以难就难在每个调用的API都包含着Windows这个操作系统的潜规则或者是windows内部的运行机制. 首先来谈谈句柄,初学习WinSDK的朋友刚看到这个词头大了吧?