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

Kiểm tra xem có thể làm cho hai ma trận tăng nghiêm ngặt hay không bằng cách hoán đổi các giá trị tương ứng chỉ trong Python

Giả sử chúng ta có hai ma trận kích thước n x m tên là mat1 và mat2. Chúng ta phải kiểm tra xem hai ma trận này có tăng hay không bằng cách chỉ hoán đổi hai phần tử trong các ma trận khác nhau khi chúng ở vị trí (i, j) trong cả hai ma trận.

Vì vậy, nếu đầu vào giống như

7 1
5
1
6
1
0


1
4
9
8 1
7

thì đầu ra sẽ là True vì chúng ta có thể hoán đổi các cặp (7, 14) và (10, 17) để làm cho chúng tăng dần.

1
4
1
5
1
6
1
7


7 9
8 1
0

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • row:=số hàng của mat1
  • col:=số cột của mat1
  • đối với tôi trong phạm vi từ 0 đến hàng - 1, thực hiện
    • đối với j trong phạm vi 0 đến col - 1, thực hiện
      • if mat1 [i, j]> mat2 [i, j], then
        • hoán đổi mat1 [i, j] và mat2 [i, j]
    • đối với tôi trong phạm vi từ 0 đến hàng - 1, thực hiện
      • đối với j trong phạm vi 0 đến col-2, thực hiện
        • nếu mat1 [i, j]> =mat1 [i, j + 1] hoặc mat2 [i, j]> =mat2 [i, j + 1], thì
          • trả về Sai
    • đối với tôi trong phạm vi từ 0 đến hàng-2, hãy thực hiện
      • đối với j trong phạm vi 0 đến col - 1, thực hiện
        • nếu mat1 [i, j]> =mat1 [i + 1, j] hoặc mat2 [i, j]> =mat2 [i + 1, j], thì
          • trả về Sai
  • trả về True

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

 def giải quyết (mat1, mat2):row =len (mat1) col =len (mat1 [0]) for i in range (row):for j in range (col):if mat1 [i] [j]> mat2 [i] [j]:mat1 [i] [j], mat2 [i] [j] =mat2 [i] [j], mat1 [i] [j] for i in range (row):for j trong dải ô (col-1):if mat1 [i] [j]> =mat1 [i] [j + 1] hoặc mat2 [i] [j]> =mat2 [i] [j + 1]:trả về Sai cho i trong dải ô (hàng-1):cho j trong dải ô (col):nếu mat1 [i] [j]> =mat1 [i + 1] [j] hoặc mat2 [i] [j]> =mat2 [i + 1] [j]:return False return Truemat1 =[[7, 15], [16, 10]] mat2 =[[14, 9], [8, 17]] print (giải quyết (mat1, mat2))  

Đầu vào

 [[7, 15], [16, 10]], [[14, 9], [8, 17]] 

Đầu ra

 Đúng