Computer >> Máy Tính >  >> Lập trình >> Python

Tìm các phần tử riêng biệt chung cho tất cả các hàng của ma trận trong Python


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,