在 Python 中找到具有重排的最大子矩阵的程序

假设我们有一个 mxn 二进制矩阵,我们可以按任意顺序重新排列矩阵的列。在执行一些重新排序任务后,我们必须找到矩阵中最大子矩阵的面积,其中子矩阵的每个元素都为 1。

所以,如果输入是这样的

101
111
001

那么输出将是 4,因为在列交换之后我们得到了像这样的矩阵

110
111
010

这里最大子矩阵是正方形大小,有四个 1。

示例

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

def solve(matrix):

   row, col = len(matrix), len(matrix[0])

   for j in range(col):

      for i in range(1,row):

         if matrix[i][j]:

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

   ans = 0

   for i in range(row):

      matrix[i].sort()

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

         if matrix[i][j]==0:

            break

         ans = max(ans, (col-j)*matrix[i][j])

   return ans

matrix = [[0,0,1],[1,1,1],[1,0,1]]

print(solve(matrix))

输入

[[0,0,1],[1,1,1],[1,0,1]]
输出结果
4

以上是 在 Python 中找到具有重排的最大子矩阵的程序 的全部内容, 来源链接: utcz.com/z/354389.html

回到顶部