在Python中通过列重新排列查找最大子矩阵面积的程序

假设我们有一个二元矩阵。我们可以先根据需要多次重新排列列,然后找到返回仅包含 1 的最大子矩阵的面积。

所以,如果输入是这样的

100
111
101

那么输出将是 4,因为我们可以安排就像 -

100
111
110

示例

让我们看看以下实现以获得更好的理解 -

def solve(matrix):

   n, m = len(matrix), len(matrix[0])

   ans = 0

   for i in range(1, n) :

      for j in range(m) :

         if matrix[i][j] :

          matrix[i][j] += matrix[i-1][j]

   for row in matrix :

      row.sort()

      for j in range(m-1, -1, -1):

         ans = max(ans, row[j] *(m - j))

   return ans

matrix = [

[1, 0, 0],

[1, 1, 1],

[1, 0, 1]

]

print(solve(matrix))

输入

[

[1, 0, 0],

[1, 1, 1],

[1, 0, 1]

]

输出结果
4

以上是 在Python中通过列重新排列查找最大子矩阵面积的程序 的全部内容, 来源链接: utcz.com/z/347451.html

回到顶部