首页 文章资讯内容详情

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

2026-06-03 1 花语

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

所以,如果输入是这样的

100111101

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

100111110

示例

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

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