用 Python 编写程序,找出炸弹爆炸时安全的地方数量?

pythonserver side programmingprogramming更新于 2026/2/16 4:28:17

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

因此,如果输入如下

110
00
00
00

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

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

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

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

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

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

      • 如果 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

相关文章


有用资源