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

开启您的职业生涯

完成课程获得认证

开始学习
广告