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

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.