在Python中查找按行列条件遵循的矩阵元素个数的程序
假设我们有一个二进制矩阵;我们必须找到符合以下规则的矩阵中元素的数量 −
- matrix[r, c] = 1
-
当j不等于c时,对于每个j,matrix[r, j] = 0,当i不等于r时,对于每个i,matrix[i, c] = 0。
因此,如果输入为
0 | 0 | 1 |
---|---|---|
1 | 0 | 0 |
0 | 1 | 0 |
那么输出将是3,因为我们有符合条件的单元格(0,2),(1,0)和(2,1)。
为了解决这个问题,我们将按照以下步骤进行 −
- 如果矩阵为空,则
- 返回0
- row := 矩阵中所有行条目总和的列表
-
col := 矩阵中所有列条目总和的列表
-
m := 矩阵的行数
-
n := 矩阵的列数
-
res := 0
-
for r in range 0 to m – 1, do
- for c in range 0 to n – 1, do
- if matrix[r, c] 为 1 并且 row[r] 为 1 并且 col[c] 也为 1,则
-
res := res + 1
- for c in range 0 to n – 1, do
-
返回 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