Python程式:根據行列條件查詢矩陣中元素的數量


假設我們有一個二元矩陣;我們必須找到滿足以下規則的矩陣中元素的數量:

  • matrix[r, c] = 1

  • 當 j 不等於 c 時,matrix[r, j] = 0,並且當 i 不等於 r 時,matrix[i, c] = 0。

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

001
100
010

那麼輸出將為 3,因為我們有單元格 (0,2)、(1,0) 和 (2,1) 滿足條件。

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

  • 如果矩陣為空,則

    • 返回 0

  • row := 矩陣中所有行條目的總和列表

  • col := 矩陣中所有列條目的總和列表

  • m := 矩陣的行數

  • n := 矩陣的列數

  • res := 0

  • 對於 r 從 0 到 m - 1,執行

    • 對於 c 從 0 到 n - 1,執行

      • 如果 matrix[r, c] 為 1 且 row[r] 為 1 且 col[c] 也為 1,則

        • res := res + 1

  • 返回 res

示例

讓我們看看下面的實現,以便更好地理解

def solve(matrix):
   if not matrix:
      return 0

   row = [sum(r) for r in matrix]
   col = [sum(c) for c in zip(*matrix)]

   m, n = len(matrix), len(matrix[0])
   res = 0
   for r in range(m):
      for c in range(n):
         if matrix[r][c] == 1 and row[r] == 1 and col[c] == 1:
            res += 1
   return res

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

輸入

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

輸出

3

更新於:2021年10月11日

瀏覽量:556

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告