最小面积矩阵覆盖

use*_*363 7 algorithm matrix

考虑到n乘n二进制矩阵,我想找到两个矩形的最小区域,它将覆盖所有的(1s).也就是说,矩形区域的总和必须是最小的.矩形可以重叠.

例:

0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0
Run Code Online (Sandbox Code Playgroud)

最小的区域是: 3 * 9 + 9 * 3 = 54

我很想知道是否有更好的解决方案O(n^4).

小智 1

您可以首先通过查找矩阵中最上面、最下面、最右边和最左边的 1 来解决一个矩形的问题。然后您就知道,当且仅当您可以剪掉全 0 的对称块时,您可以通过使用第二个矩形来改善结果。

  • 不必要。例如,如果您的形状呈 L 形。 (3认同)