Giả sử chúng ta có một ma trận nhị phân; chúng ta phải tìm số phần tử trong ma trận tuân theo các quy tắc sau -
-
ma trận [r, c] =1
-
ma trận [r, j] =0 với mọi j khi j không bằng c và ma trận [i, c] =0 với mọi i khi i không bằng r.
Vì vậy, nếu đầu vào giống như
| 0 | 0 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
thì đầu ra sẽ là 3, bởi vì chúng ta có các ô (0,2), (1,0) và (2,1) đáp ứng các tiêu chí.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
nếu ma trận trống, thì
-
trả về 0
-
-
row:=danh sách tổng của tất cả các mục nhập hàng trong ma trận
-
col:=danh sách tổng của tất cả các mục nhập cột trong ma trận
-
m:=số hàng của ma trận
-
n:=số cột của ma trận
-
res:=0
-
đối với r trong phạm vi 0 đến m - 1, thực hiện
-
đối với c trong phạm vi 0 đến n - 1, thực hiện
-
nếu ma trận [r, c] là 1 và hàng [r] là 1 và col [c] cũng là 1 thì
-
res:=res + 1
-
-
-
-
trả lại res
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau đây để hiểu rõ hơn
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)) Đầu vào
[[0, 0, 1],[1, 0, 0],[0, 1, 0]]
Đầu ra
3