在给定 bool 数组中查找最大矩形区域的算法

标签 algorithm geometry

所以问题本身很简单,每次输入,给我一个宽度和高度,都不会超过200,然后是一串0和1代表二维平面。

像这样。

4 5
0 0 1 1 1
0 1 1 1 1
1 1 1 1 1
1 1 1 1 1

目标是求右边的面积,面积为12,不用说,矩形只能由1组成。

我在写这篇文章的时候考虑过 flood-fill,但是它必须为数组中的每个 1 重新计算。最佳算法是什么?

最佳答案

类似于下面的问题:找到和最大的子矩阵。这可以通过 O(n^3) 算法来完成。我相信你可以在 stackoverflow 上找到它或在互联网上搜索。

对于这道题,可以把0换成-INF,然后应用上面的算法求出最大的矩形区域。

关于在给定 bool 数组中查找最大矩形区域的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524191/

相关文章:

javascript - 对于圆内的点,找出它在哪四分之一?

计算C中三角形的边长

c++ - 如何找到两个 vector 之间的角度?

java - 更正我计算两点之间大圆距离的算法

有序组合算法

java - 绘制圆(使用带 for 循环的图像中应用的像素)

c++ - 是什么让 Qt 小部件及其布局正确运行(就其大小而言)?

algorithm - 大整数的除法(模数)(最多 200 位)

algorithm - 随机划分一个二维复封闭区域

algorithm - 位置搜索算法