Giả sử chúng ta có một ma trận nhị phân bậc m x n, chúng ta phải tìm số vị trí đặc biệt trong ma trận. Vị trí (i, j) là một vị trí đặc biệt khi mat [i, j] =1 và tất cả các phần tử khác trong hàng i và cột j bằng 0.
Vì vậy, nếu đầu vào giống như
1 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 0 |
thì đầu ra sẽ là 3, ở đây các vị trí đặc biệt là (0, 0), (1,2) và (3,1).
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
đặc biệt:=0
-
đối với tôi trong phạm vi 0 đến số hàng của ma trận, hãy thực hiện
-
nếu số 1 trong ma trận hàng [i] là 1 thì
-
numOfOne:=0
-
indexOfOne:=vị trí của 1 trong ma trận [i]
-
đối với j trong phạm vi 0 đến kích thước cột của ma trận, thực hiện
-
nếu ma trận [j, indexOfOne] giống 1, thì
-
numOfOne:=numOfOne + 1
-
-
nếu numOfOne> 1, thì
-
đi ra từ vòng lặp
-
-
-
nếu numOfOne giống với 1 thì
-
đặc biệt:=special + 1
-
-
-
-
trả lại đặc biệt
Ví dụ (Python)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(matrix): special = 0 for i in range(len(matrix)): if matrix[i].count(1) == 1: numOfOne = 0 indexOfOne = matrix[i].index(1) for j in range(len(matrix)): if matrix[j][indexOfOne] == 1: numOfOne += 1 if numOfOne > 1: break if numOfOne == 1: special += 1 return special matrix = [[1,0,0,0,0], [0,0,1,0,0], [0,0,0,1,1], [0,1,0,0,0]] print(solve(matrix))
Đầu vào
[[1,0,0,0,0], [0,0,1,0,0], [0,0,0,1,1], [0,1,0,0,0]]
Đầu ra
3