1 和 0 的数量相等的最大子矩阵

2023-11-21

给定一个大小矩阵mxn仅包含 0 和 1。我需要找到其中 1 和 0 的数量相等的最大子矩阵。蛮力方法是O(m^2*n^2)我们还能做得更好吗?
我尝试应用动态规划,但找不到任何最佳的子结构。

我相信这里讨论了这个问题的类似一维版本:
用于查找最大平衡子数组的空间有效算法?
其中有一个O(n)使用一些额外空间的解决方案。


该算法假设我们搜索具有连续行和列并且具有最大可能的高度和宽度乘积的子矩阵。

从以下预处理开始:

A = substitute_zero_with_minus_one(InputMatrix)
B = prefix_sum_for_each_column(A)
C = prefix_sum_for_each_row(B)

现在对于每对行 (i, j) 执行以下操作:

for each column k:
  d = C[k, j] - C[k, i]
  if h[d] not empty:
    if (k - h[d]) * (j - i) is greater than best result:
      update best result
  else:
    h[d] = k

Time complexity is O(N2 * M), extra space is O(N * M).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1 和 0 的数量相等的最大子矩阵 的相关文章

  • 字符串的渐进单词组合

    我需要获得字符串的渐进单词组合 例如 这是字符串 输出 这是字符串 这是 这个字符串 是字符串 这 是 细绳 你知道类似的算法吗 我需要php语言 谢谢 这是解决您问题的简单代码 我将每个字符串递归地连接到数组中的其余字符串 string
  • 整数除法性质

    下面的整数算术性质成立吗 m n l m n l 起初我以为我知道答案 不成立 但现在不确定 它适用于所有数字还是仅适用于某些条件 即n gt l 该问题涉及计算机算术 即q n m q m n 忽略溢出 Case1 assume m kn
  • 使用 stl sort 对表进行排序

    我有一个巨大的表 约 50Gb 格式为 i j k 来自稀疏矩阵 存储为 uint32 t idx1 idx2 float vals uint32 t tablesize 我想使用给定的比较函数 即 idx1 和 idx2 的函数 对其进行
  • 打印从 1 到 100 的质数

    此 C 代码打印出以下素数 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 但我不认为这就是我的书所希望的写作方式 它提到了一些关于数字的平方根的内容
  • 查找数组中的重叠数据

    我们正在编写一个 C 应用程序 它将有助于删除不必要的数据重复器 只有在以下情况下才可以移除中继器 all它接收到的数据被其他中继器接收 我们第一步需要做的事情解释如下 例如 我有 int 数组的集合 A 1 2 3 4 5 b 2 4 6
  • n的渐近增长选择下限(n/2)

    如何找到 n select Floor n 2 的渐近增长 我试过 使用扩展并得到它等于 n n 1 floor n 2 1 n floor n 2 知道我该如何从那里去吗 感谢任何帮助 更喜欢提示而不是答案 我同意上面的答案 但想提供更多
  • 仅使用两个变量交换两个数字

    它如何执行交换 a a b b a b a b a 我不同意把它换成书 书中的选项包括 a和b的值的补集 否定和b 希望这些选项也不能满足它 正确的算法应该是 a a b b a b a a b
  • 读取4个点的坐标。他们做一个正方形吗?

    我计算点之间的距离 如果距离相等 则点构成一个正方形 否则不 仅当我按以下顺序读取坐标 A x y B x y C x y D x y 或相反时 我的代码才有效 但是如果我这样读 例如 A x y B x y D x y C x y 它将不
  • CSR 矩阵 - 矩阵乘法

    我有两个方阵A and B 我必须转换B to CSR Format并确定产品C A B csr C 我在网上找到了很多关于CSR 矩阵 向量乘法 http www mathcs emory edu cheung Courses 561 S
  • 如何从列中创建对称矩阵?

    例如 我想转动以下列 90 175 600 650 655 660 代入矩阵 90 175 600 650 655 660 175 600 650 655 660 655 600 650 655 660 655 650 650 655 66
  • 如何以最小化每个分区总和的最大值的方式对整数数组进行分区?

    输入是正整数或空整数的数组 A 和另一个整数 K 我们应该将 A 划分为 K 个连续元素块 我所说的 划分 是指 A 的每个元素都属于某个块 并且 2 个不同的块不包含任何共同元素 我们将块的总和定义为该块的元素的总和 目标是在 K 个块中
  • Haar级联正例图像大小调整

    我正在迈出第一步 为自定义对象识别创建 haar 级联 我花了时间获取大量数据并编写了一些预处理脚本以将视频转换为帧 我的下一步是裁剪感兴趣的对象 以创建一些积极的训练示例 我有几个问题 我确实在网上寻找答案 我有点困惑 我读到我应该致力于
  • 找到将一个数字转换为另一个数字的最小移动次数的算法

    假设我们有两个正整数 a 和 b 每次移动我们都可以将 a 除以 2 但前提是 a 是偶数 将 a 乘以 2 或者将 a 加 1 将a变为b需要多少步 找到一个直接公式或一种有效的算法 即以对数时间运行的算法 我取得的一些进展 我们可以把它
  • 寻找 5 字节 PRNG 的种子

    这是一个古老的想法 但从那时起我就无法找到一些相当好的方法来解决它提出的问题 所以我 发明 了 见下文 一个非常紧凑的 在我看来 性能相当好的 PRNG 但我无法找出算法来为其在大位深度上构建合适的种子值 我当前的解决方案只是暴力破解 它的
  • 具有最小刻度的图表的漂亮标签算法

    我需要手动计算图表的刻度标签和刻度范围 我知道漂亮刻度的 标准 算法 参见 我也知道这个Java实现 http erison blogspot nl 2011 07 algorithm for optimal scaling on char
  • 二分查找问题? [复制]

    这个问题在这里已经有答案了 可能的重复 实施二分查找有哪些陷阱 https stackoverflow com questions 504335 what are the pitfalls in implementing binary se
  • 正则表达式等价

    有没有办法找出两个任意正则表达式是否等价 对我来说看起来很复杂的问题 但可能有一些 DFA 简化机制之类的 要测试等价性 您可以计算的表达式并进行比较
  • 为什么对本地列表求和比用“GHC -O2”对教会编码列表求和慢?

    为了测试教会编码的列表如何针对用户定义的列表和本机列表执行 我准备了 3 个基准测试 用户定义的列表 data List a Cons a List a Nil deriving Show lenumTil n go n Nil where
  • 在c#中遍历对象树

    我有一棵由多个对象组成的树 其中每个对象都有一个名称 string id int 以及可能是同一类型的子数组 如何遍历整个树并打印出所有 id 和名称 我是编程新手 坦率地说 我很难理解这个问题 因为我不知道有多少个级别 现在我正在使用fo
  • 将两个大数作为字符串相除,而不使用java中的Bignumbers

    我需要在不使用 Biginteger 的情况下划分两个大整数 因为数字不能存储在原始类型中 因为我需要从给定的字符串中逐个字符地执行此操作 我已经创建了一个名为 BigNumber 的类 用这个类我可以 Add multiply 比较两个内

随机推荐

  • Visual Studio代码:自动提交git

    很多时候 我忘记将我的编辑提交到我的 git 中 如果我关闭了 VSCode 我就不能再使用 ctrl Z 了 因为 我已经设置了 git 我想我可以使用类似每 30 秒左右自动提交一次的东西 我见过这个扩大btu ti 不是开源的 所以我
  • 如何将主题应用到 元素

    我有一个扩展 PreferenceActivity 的活动 我的主题 android theme android style Theme Light NoTitleBar Fullscreen 应用于清单文件中的应用程序级别 除了 Pref
  • 为 PhoneGap 应用程序嵌入 PDF 查看器

    如何为phonegap 应用程序嵌入PDF 查看器 我决定使用 PhoneGap Sencha Touch 开发适用于 iOS 和 Android 的应用程序 我只有 iOS PhoneGap 经验 对我有用的解决方案是制作一个插件 弹出一
  • 如何在 C# 中将字符串解码为 XML 字符串

    我有一个包含 XML 描述的字符串 来自 CDATA 元素 我需要使用 C 将此字符串解码为一个可以正确显示字符的新字符串 现有字符串 lt xml version 1 0 encoding UTF 8 standalone yes gt
  • XNA 3d 物理引擎 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在寻找 XNA 的 3
  • Android jacoco 覆盖率空与 gradle

    我正在尝试让 jacoco 为我的 android 测试项目创建一个代码覆盖率报告 我在 build gradle 中有以下内容 apply plugin com android application apply plugin jacoc
  • 使用 osascript -e“显示通知”时更改通知图标

    我正在尝试为 emacs 编写一个插件 使用 OS X 的本机通知显示来显示通知 我遇到过terminal notifier这是可行的 但它是一个依赖项 并不适用于每台 Mac 另外 应该让用户知道他们需要安装该软件包 我想做的是调用一个进
  • 在 IE8 标准模式下对 IE8 中呈现的本地 html 文件使用 BASE 元素时缺少样式表/脚本/图像

    我们有一些 HTML 页面 本地的 而不是 Web 服务器上的 它们使用 BASE 元素来标识包含一堆常见样式表和图像的特定基本目录 这是一个示例 页面存储在 c temp html test html 中 资源目录是 c temp res
  • std::unique_ptr reset() 操作顺序

    Calling void reset pointer ptr pointer noexcept 调用以下操作 给定 current ptr 由 this 管理的指针 按以下顺序执行以下操作 保存当前指针的副本 old ptr current
  • 如何从命令行使用 BigQuery REST API?

    尝试向 BigQuery REST API 之一发出普通 GET 请求会出现如下错误 curl https www googleapis com bigquery v2 projects PROJECT ID jobs JOBID Outp
  • 关于异步套接字操作和消息帧的.NET问题

    我一直在到处寻找有关如何处理 TCP 消息帧的示例 我看到许多示例 其中 NetworkStreams 被传递到 StreamReader 或 StreamWriter 对象中 然后对 n 分隔消息使用 ReadLine 或 WriteLi
  • 如何避免硬编码?在装饰器中

    我读过了 如何实现打字稿装饰器 和多个来源 但有些事情我无法使用装饰器完成 class FooBar public foo arg void console log this this bar arg private bar arg voi
  • 为什么 substring() 方法 substring(start_index(inclusive), end_index(exclusive)) [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 为什么子字符串将起始参数作为索引 第二个参数作为从开头开始的长度 换句话说 1 2 3 4 5 lt Length from beginning A B C D E 0 1 2 3 4 l
  • 后台线程如何挂起UI线程?

    我正在使用后台线程通过 USB 初始化仪器 当我尝试打开设备时 用户界面挂起 我希望后台线程在设备上调用 Open 时暂停 但 UI 线程不会 我正在测试这个 没有来自后台线程的 UI 交互 我不知道如何调试这个问题 而且这个问题太宽泛了
  • 如何从C中的stdout读取

    我需要写一个C程序 myprogram 检查其他程序的输出 它基本上应该像这样工作 otherprogram myprogram 但我找不到如何逐行读取stdout 或管道 然后将所有这些写入stdout 一个程序的stdout成为下一个程
  • numpy 对数组进行切片而不复制它

    我的矩阵中有大量数据x我需要分析一些子矩阵 我使用以下代码来选择子矩阵 gt gt gt import numpy as np gt gt gt x np random normal 0 1 20 2 gt gt gt x array 1
  • Matlab 上的图像去模糊

    我是 MatLab 新手 一直在玩并阅读帮助指南 但我似乎无法解决这种情况 我用高斯算法去除了噪音 这是成功的 但我没有设法让图像变得清晰 我尝试使用理查森 露西去模糊算法 但它不起作用 知道如何解决这个问题吗 提前谢谢 这是我到目前为止所
  • C# HttpWebResponse 彗星问题

    我想知道如何读取 HttpWebRequest 和 HttpWebResponse 的持久连接 问题似乎是 GetResponseStream 函数在返回之前等待服务器连接关闭 有没有其他简单的方法来读取彗星连接 不起作用的例子 get t
  • Google Cloud Functions:如何共享源代码?

    我有一个节点服务器和多个控制器 它们在该目录中执行数据库操作和帮助程序 例如 用于电子邮件 我想在我的函数中使用该目录中的源代码 假设以下目录结构 src server app controllers email helper js fns
  • 1 和 0 的数量相等的最大子矩阵

    给定一个大小矩阵mxn仅包含 0 和 1 我需要找到其中 1 和 0 的数量相等的最大子矩阵 蛮力方法是O m 2 n 2 我们还能做得更好吗 我尝试应用动态规划 但找不到任何最佳的子结构 我相信这里讨论了这个问题的类似一维版本 用于查找最