假设我们有两个大小为nxm的矩阵,分别为mat1和mat2。我们仅在两个矩阵中的两个元素都位于(i,j)位置时,才通过交换不同矩阵中的两个元素来检查这两个矩阵在哪里严格增加。
所以,如果输入像
7 | 1 5 |
1 6 | 1 0 |
1 4 | 9 |
8 | 1 7 |
然后输出将为True,因为我们可以交换(7,14)和(10,17)对以使其严格增加。
1 4 | 1 5 |
1 6 | 1 7 |
7 | 9 |
8 | 1 0 |
让我们看下面的实现以更好地理解-
def solve(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 in range(col-1): if mat1[i][j]>= mat1[i][j + 1] or mat2[i][j]>= mat2[i][j + 1]: return False for i in range(row-1): for j in range(col): if mat1[i][j]>= mat1[i + 1][j] or mat2[i][j]>= mat2[i + 1][j]: return False return True mat1 = [[7, 15], [16, 10]] mat2 = [[14, 9], [8, 17]] print(solve(mat1, mat2))
[[7, 15], [16, 10]], [[14, 9], [8, 17]]输出结果
True