考虑到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
最小区域为:3 * 9 + 9 * 3 = 54
我有兴趣知道是否有比O(n^4)
更好的解决方案。
答案 0 :(得分:1)
您可以先找到矩阵中最上面,最下面,最右边和最左边的1来解决一个矩形的问题。然后你知道你可以通过使用第二个矩形来改善你的结果,当且仅当你能够切出所有0的对称块时。