Bài toán: cho ma trận, hiển thị ma trận chuyển vị. Chuyển vị: giá trị tại A[i][j] thay bằng A[j][i].
Cách 1: Tạo ma trận mới lưu chuyển vị
def transpose(A, B):
for i in range(M):
for j in range(N):
B[i][j] = A[j][i]
M = N = 4
A = [[0, 1, 1, 0], [0, 2, 0, 2], [0, 3, 0, 3], [0, 0, 4, 4]]
B = A[:][:] # ma trận rỗng
transpose(A, B)
print("Transformed matrix is")
for i in range(N):
for j in range(N):
print(B[i][j], " ", end='')
print()
Transformed matrix is 0 0 0 0 0 2 3 0 0 3 0 4 0 0 4 4
Cách 2: Lưu chuyển vị ngay vào ma trận gốc (in-place)
def transpose(A):
for i in range(M):
for j in range(i+1, N):
A[i][j], A[j][i] = A[j][i], A[i][j]
M = N = 4
A = [[0, 1, 1, 0], [0, 2, 0, 2], [0, 3, 0, 3], [0, 0, 4, 4]]
transpose(A)
print("Transformed matrix is")
for i in range(M):
for j in range(N):
print(A[i][j], " ", end='')
print()
Transformed matrix is 0 0 0 0 0 2 3 0 0 3 0 4 0 0 4 4
Kết luận
Đã học 2 cách chuyển vị ma trận: tạo ma trận mới và in-place (chỉ dùng cho ma trận vuông).