📜  门|门 IT 2007 |第 39 题(1)

📅  最后修改于: 2023-12-03 14:58:36.092000             🧑  作者: Mango

门|门 IT 2007 |第 39 题

题目描述

在一些研究领域,经常需要对大量数据进行分析和处理。一种常见的方式是使用矩阵来表示数据,例如在图像处理、信号处理、统计学等领域中,矩阵都扮演着重要的角色。编写一个程序,输入一个 nm 列的矩阵,然后输出这个矩阵的转置矩阵。

输入格式

第一行包含两个整数 nm,表示矩阵的行数和列数。接下来 n 行,每行包含 m 个整数,表示矩阵的元素。矩阵中的元素均为不超过 $1000$ 的整数。

输出格式

输出一个 mn 列的矩阵,即为输入矩阵的转置矩阵。

样例

输入样例:

3 4
1 2 3 4
5 6 7 8
9 10 11 12

输出样例:

1 5 9
2 6 10
3 7 11
4 8 12
题解

要实现矩阵转置,可以使用两个嵌套的循环来遍历矩阵,并交换对应位置的元素。时间复杂度为 $O(nm)$。

代码如下:

# 读入矩阵的行数和列数
n, m = map(int, input().split())

# 读入矩阵
matrix = []
for i in range(n):
    row = list(map(int, input().split()))
    matrix.append(row)

# 转置矩阵
transposed_matrix = []
for j in range(m):
    column = []
    for i in range(n):
        column.append(matrix[i][j])
    transposed_matrix.append(column)

# 输出转置矩阵
for row in transposed_matrix:
    print(' '.join(map(str, row)))

时间复杂度分析:

读入矩阵的时间复杂度为 $O(nm)$。

转置矩阵的时间复杂度为 $O(nm)$。

输出转置矩阵的时间复杂度为 $O(nm)$。

因此,总时间复杂度为 $O(nm)$。

参考资料