当炸弹在Python中爆炸时,查找地方数量的程序安全吗?

假设我们有一个二维二进制矩阵,其中1表示炸弹,0表示空单元。炸弹爆炸时,同一行和同一列上的所有空间均被破坏。我们必须找到可以站立的空间数量而不会受到损坏。

所以,如果输入像

110
000
000

那么输出将为2,因为在右下角单元格和右中角单元格有两个空格是安全的。

为了解决这个问题,我们将按照以下步骤操作:

  • r:=列表的大小与矩阵的行数相同,并用false填充

  • c:=与矩阵的列数相同的大小列表,并用false填充

  • 对于范围从0到矩阵的行计数的i,执行1

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

    • r [i]:=真,c [j]:=真

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

    • ct:= 0

    • 对于范围从0到矩阵的行计数的i,执行1

      • 如果r [i]为False,而c [j]为False,则

      • ct:= ct + 1

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

      • 返回ct

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

      示例

      class Solution:
         def solve(self, matrix):
            r = [False for i in range(len(matrix))]
            c = [False for i in range(len(matrix[0]))]
      
            for i in range(len(matrix)):
               for j in range(len(matrix[0])):
                  if matrix[i][j] == 1:
                     r[i] = True
                     c[j] = True
      
         ct = 0
         for i in range(len(matrix)):
            for j in range(len(matrix[0])):
               if r[i] == False and c[j] == False:
                  ct += 1
         return ct
      
      ob = Solution()matrix = [
         [1, 1, 0],
         [0, 0, 0],
         [0, 0, 0]
      ]
      print(ob.solve(matrix))

      输入值

      [
      [1, 1, 0],
      [0, 0, 0],
      [0, 0, 0] ]

      输出结果

      2
      猜你喜欢