题目描述
给你一个n行m列的矩阵,顺时针旋转90度后输出
输入数据
第一行为两个整数n,m. 0<n,m<100
接下来有n行,每行m个正整数,每个数不超过100
输出数据
旋转后的矩阵
样例输入
2 3
1 2 3
4 5 6
样例输出
4 1
5 2
6 3
程序分析
解题思路
- 输入的是一个m×n的矩阵,旋转之后是n×m
- 旋转分析
1) 旋转之前的No.0行,旋转之后为No.m-1列
2) 旋转之前的No.1行,旋转之后为No.m-2列
3) 旋转之前的No.m-1行,旋转之后为No.0列
4) 旋转之前的No.i 行,旋转之后为No.m-1-i 列
5) 旋转之前的No.m-1-j 行,旋转之后为No.j 列
- 得到旋转之后的矩阵
1)生成arrayDict2时,按照一列一列的生成,先生成第No.0列,接着No.1列。。。No.m-1列。所以先固定 j,让 i 取遍[0:n-1],下面是两个for循环的写法。
for j in range(m):
for i in range(n):
arrayDict2[i][j] = arrayDict[m-1-j][i]
代码
m, n = map(int, input().split())
arrayDict = {}
for i in range(m):
arrayDict[i] = list(map(int, input().split()))
arrayDict2 = [[0] * m for i in range(n)]
for j in range(m):
for i in range(n):
arrayDict2[i][j] = arrayDict[m-1-j][i]
for i in range(n):
for j in range(m-1):
print(arrayDict2[i][j], end=" ")
print(arrayDict2[i][m-1])