Giả sử ta có ma trận vuông bậc m x m; chúng ta phải tìm tất cả các phần tử riêng biệt chung cho tất cả các hàng của ma trận đã cho.
Vì vậy, nếu đầu vào giống như
13 | 2 | 15 | 4 | 17 |
15 | 3 | 2 | 4 | 36 |
15 | 2 | 15 | 4 | 12 |
15 | 26 | 4 | 3 | 2 |
2 | 19 | 4 | 22 | 15 |
thì đầu ra sẽ là [2,4,15]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
Định nghĩa một hàm sortRows (). Điều này sẽ lấy ma trận
-
n:=số hàng
-
đối với tôi trong phạm vi từ 0 đến n, hãy thực hiện
-
sắp xếp ma trận danh sách [i]
-
-
Trong phương thức chính, hãy thực hiện như sau -
-
n:=số hàng
-
sortRows (ma trận)
-
current_idx:=danh sách kích thước n, điền bằng 0
-
đối với tôi trong phạm vi từ 0 đến n, hãy thực hiện
-
current_idx [i]:=0
-
-
f:=0
-
while current_idx [0]
-
value:=matrix [0, current_idx [0]]
-
hiện tại:=True
-
đối với tôi trong phạm vi từ 1 đến n, hãy thực hiện
-
while (current_idx [i]
-
current_idx [i]:=current_idx [i] + 1
-
-
nếu ma trận [i, current_idx [i] - 1] không giống giá trị thì
-
hiện tại:=Sai
-
-
nếu current_idx [i] giống với n thì
-
f:=1
-
đi ra từ vòng lặp
-
-
-
nếu hiện tại là khác 0 thì
-
giá trị hiển thị
-
-
nếu f giống 1 thì
-
đi ra từ vòng lặp
-
-
current_idx [0]:=current_idx [0] + 1
-
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
MAX = 100 def sortRows(matrix): n = len(matrix) for i in range(0, n): matrix[i].sort(); def find_common(matrix): n = len(matrix) sortRows(matrix) current_idx = [0] * n for i in range (0, n): current_idx[i] = 0 f = 0 while(current_idx[0] < n): value = matrix[0][current_idx[0]] present = True for i in range (1, n): while (current_idx[i] < n and matrix[i][current_idx[i]] <= value): current_idx[i] = current_idx[i] + 1 if (matrix[i][current_idx[i] - 1] != value): present = False if (current_idx[i] == n): f = 1 break if (present): print(value, end = ", ") if (f == 1): break current_idx[0] = current_idx[0] + 1 mat = [ [13, 2, 15, 4, 17], [15, 3, 2, 4, 36], [15, 2, 15, 4, 12], [15, 26, 4, 3, 2], [2, 19, 4, 22, 15]] find_common(mat)
Đầu vào
[[13, 2, 15, 4, 17], [15, 3, 2, 4, 36], [15, 2, 15, 4, 12], [15, 26, 4, 3, 2], [2, 19, 4, 22, 15]]
Đầu ra
2, 4, 15,