有一个非常受欢迎的问题:给定二进制矩阵N * M(仅包含0和1)找到由1组成的最大矩形的区域。它可以使用动态编程轻松解决。我在考虑这个问题的一些变化。如果我们可以将一个0切换为1怎么办?那怎么解决这个问题呢?为了说清楚,有一个例子
1 1 0 1 1 0
0 1 1 1 0 1
1 1 1 0 1 1
1 1 1 1 0 1
0 1 1 1 1 0
我们可以在第3行,第4列中将一个0切换为1,然后三角形的最大区域为3 * 4 = 12
答案 0 :(得分:0)
我们有:
solve(matrix): return the largest rectangle consisting of 1's.
然后
for i:1 to n
for j:1 to m
if matrix[i][j]==0
matrix[i][j]=1
solve(matrix)
matrix[i][j]=0