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