使用 Python 查詢二進位制矩陣中特殊位置的數量的程式


假設我們有一個 m x n 階的二進位制矩陣,我們需要找到矩陣中特殊位置的數量。當 mat[i,j] = 1 且第 i 行和第 j 列中的所有其他元素都為 0 時,位置 (i,j) 就是一個特殊位置。

所以,如果輸入如下所示:

10000
00100
00011
01000

那麼輸出將是 3,這裡特殊位置是 (0, 0)、(1,2) 和 (3,1)。

為了解決這個問題,我們將遵循以下步驟:

  • special := 0

  • 對於 i 從 0 到矩陣的行數,執行以下操作:

    • 如果矩陣[i] 行中 1 的數量為 1,則:

      • numOfOne := 0

      • indexOfOne := 矩陣[i] 中 1 的位置

      • 對於 j 從 0 到矩陣的列數,執行以下操作:

        • 如果矩陣[j, indexOfOne] 等於 1,則:

          • numOfOne := numOfOne + 1

        • 如果 numOfOne > 1,則:

          • 退出迴圈

      • 如果 numOfOne 等於 1,則:

        • special := special + 1

  • 返回 special

示例(Python)

讓我們看看以下實現以獲得更好的理解:

 線上演示

def solve(matrix):
   special = 0
   for i in range(len(matrix)):
      if matrix[i].count(1) == 1:
         numOfOne = 0
         indexOfOne = matrix[i].index(1)
         for j in range(len(matrix)):
            if matrix[j][indexOfOne] == 1:
               numOfOne += 1
            if numOfOne > 1:
               break

         if numOfOne == 1:
            special += 1

   return special

matrix = [[1,0,0,0,0],
   [0,0,1,0,0],
   [0,0,0,1,1],
   [0,1,0,0,0]]
print(solve(matrix))

輸入

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

輸出

3

更新於: 2021年5月17日

252 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告