程序在python中查找给定矩阵中最大1的平方面积

假设我们有一个二进制矩阵,则必须在该给定矩阵中找到最大的1的平方。

所以,如果输入像

1
0
0
0
0
1
1
0
0
0
0
0
1
1
0
1
1
1
1
0
0
0
1
1
1
1
0
0
0
1
1
1
1
0
0
0
1
1
1
1
0
0

那么输出将为16。

为了解决这个问题,我们将遵循以下步骤-

  • res:= 0

  • 对于0到矩阵大小的范围内的i

    • res:= res和matrix [i,0]的最大值

  • 对于范围从0到矩阵[0]大小的i,执行

    • res:= res和matrix [0,i]的最大值

  • 对于范围在1到矩阵行数的i,执行

    • 如果matrix [i,j]与1相同,则

    • res = res和matrix [i,j]的最大值

    • 矩阵[i,j] =(矩阵[i-1,j],矩阵[i-1,j-1]和矩阵[i,j-1])的最小值+ 1

    • 对于范围1到矩阵的列数的j,执行

    • 返回res ^ 2

    让我们看下面的实现以更好地理解-

    例 

    class Solution:
       def solve(self, matrix):
          res = 0
          for i in range(len(matrix)):
             res = max(res, matrix[i][0])
          for i in range(len(matrix[0])):
             res = max(res, matrix[0][i])
    
          for i in range(1, len(matrix)):
             for j in range(1, len(matrix[0])):
                if matrix[i][j] == 1:
                   matrix[i][j] = min(matrix[i - 1][j], matrix[i - 1][j - 1], matrix[i][j - 1]) + 1
    
                   res = max(res, matrix[i][j])
    
          return res * res
    
    ob = Solution()matrix = [
       [1, 0, 0, 0, 0, 1, 1],
       [0, 0, 0, 0, 0, 1, 1],
       [0, 1, 1, 1, 1, 0, 0],
       [0, 1, 1, 1, 1, 0, 0],
       [0, 1, 1, 1, 1, 0, 0],
       [0, 1, 1, 1, 1, 0, 0]
    ]
    print(ob.solve(matrix))

    输入值

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

    输出结果

    16
    猜你喜欢