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]
- if mat1 [i, j]> mat2 [i, j], then
- đố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
- nếu mat1 [i, j]> =mat1 [i, j + 1] hoặc mat2 [i, j]> =mat2 [i, j + 1], thì
- đối với j trong phạm vi 0 đến col-2, thực hiện
- đố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
- nếu mat1 [i, j]> =mat1 [i + 1, j] hoặc mat2 [i, j]> =mat2 [i + 1, j], thì
- đối với j trong phạm vi 0 đến col - 1, thực hiện
- đối với j trong phạm vi 0 đến col - 1, thực hiện
- 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