首页 > 试题广场 >

矩阵转置

[编程题]矩阵转置
  • 热度指数:51768 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}牛牛有一个矩阵 a_{n,m},他想编写一个程序,计算转置后的矩阵 a_{n,m}^{\top}

【名词解释】
\hspace{15pt}【转置矩阵】转置矩阵是将矩阵的行列互换得到的新矩阵。

输入描述:
\hspace{15pt}在一行中输入两个整数 n,m \left(1 \leqq n,m \leqq 10\right),分别表示矩阵的行数和列数。 
\hspace{15pt}接下来 n 行,每行输入 m 个整数 a_{i,1},a_{i,2},\dots,a_{i,m} \left(-10^{9} \leqq a_{i,j} \leqq 10^{9}\right),用空格分隔。


输出描述:
\hspace{15pt}输出 mn 列,为矩阵的转置结果。每个元素之后使用一个空格。
示例1

输入

2 3
1 2 3
4 5 6

输出

1 4
2 5
3 6

说明

原矩阵为:

\begin{pmatrix}1 & 2 & 3\\4 & 5 & 6\end{pmatrix}

其转置矩阵为:

\begin{pmatrix}1 & 4\\2 & 5\\3 & 6\end{pmatrix}
示例2

输入

1 4
7 8 9 10

输出

7
8
9
10

说明

原矩阵为  :

\begin{pmatrix}7 & 8 & 9 & 10\end{pmatrix}

其转置矩阵为:

\begin{pmatrix}7\\8\\9\\10\end{pmatrix}
n, m = map(int, input().split())
a = []

for i in range(n):
    row = list(map(int, input().split()))
    a.append(row)
for j in range(m):
    for i in range(n):
        print(a[i][j], end=' ')
    print()
发表于 2025-09-26 15:45:16 回复(0)
使用zip直接按列排序,转换为行,无需嵌套循环。
n,m = list(map(int,input().split()))
li = []
for i in range(n):
    text = list(map(str,input().split()))
    li.append(text)
    
for j in list(map(list,zip(*li))):
    print(' '.join(j))


发表于 2025-09-23 21:59:50 回复(0)
import sys
a,b = map(int,input().split())

num =[]

for line in sys.stdin:
    num.append(list(map(int,line.split())))

# print(num)
for j in range(b):
    res = ""
    for i in range(a):
        res+=str(num[i][j])
        res += " "
    print(res)

发表于 2025-09-05 17:47:25 回复(0)
n,m =map(int,input().split())
d = {}
for i in range(n):
    d [i]= list(map(int ,input().split()))

for x in range(m):
    s = ''
    for j in range(n):
        s = s+str(d[j][x])+' '
    print(s)
发表于 2025-07-22 10:58:23 回复(0)
n, m = map(int, input().split())
matrix = []

for _ in range (n):
    an = list(map(int, input().split()))
    matrix.append(an)

for i in range (m):
    for j in range (n):
        print(matrix[j][i], end=' ')
    print()
发表于 2025-07-16 08:14:54 回复(0)
n,m=map(int,input().split())
matrix=[list(map(int,input().split())) for _ in range(n)]
for k in range(m):
    for j in range(n):
        print(matrix[j][k], end=' ')
    print()
发表于 2025-07-04 11:14:00 回复(0)
#开辟新空间数组
row,col = map(int,input().split())
arr = list(input().split() for _ in range(row))
newarr =[["0"]*row for _ in range(col) ] 

for i in range(row):
    for j in range(col):
        newarr[j][i] =arr[i][j]
for i in newarr:
    print(*i)


发表于 2024-09-29 18:51:35 回复(0)
输出空的print()表示换行
n, m = map(int, input().split())
a = []

for i in range(n):
    a.append(list(map(int, input().split())))

for j in range(m):
    for i in range(n):
        print(a[i][j],end=" ")
    print()


编辑于 2024-02-09 22:49:46 回复(0)
m,n=map(int,input().split())
a=[]
for i in range(m):
    a.append(input().split())
for i in range(n):
    for j in range(m):
        print(a[j][i],end='')
        print(' ',end='')
    print()
发表于 2022-02-26 21:28:29 回复(0)
import numpy as np
n,m=map(int,input().split())
ls=[]
for i in range(n):
    a=list(map(int,input().split()))
    ls.append(a)
a=np.transpose(ls)
for i in range(m):
    for j in range(n):
        print(a[i][j],end=" ")
    print()
ModuleNotFoundError: No module named 'numpy'

发表于 2022-01-10 13:59:43 回复(0)