Python程序:计算炸弹爆炸后安全区域的数量


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

因此,如果输入如下所示:

110
000
000

则输出为2,因为右下角单元格和中间右单元格是安全的。

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

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

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

  • 对于范围从0到矩阵行数-1的i:

    • 对于范围从0到矩阵列数-1的j:

      • 如果matrix[i, j]等于1,则

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

  • ct := 0

  • 对于范围从0到矩阵行数-1的i:

    • 对于范围从0到矩阵列数-1的j:

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

        • ct := ct + 1

  • 返回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

更新于:2020年11月10日

浏览量:153

开启你的职业生涯

完成课程获得认证

开始学习
广告