图像旋转
原题连接:http://118.190.20.162/view.page?gpid=T27
试题编号: | 201503-1 |
试题名称: | 图像旋转 |
时间限制: | 5.0s |
内存限制: | 256.0MB |
问题描述: |
问题描述
旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。
计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。 输入格式
输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。
接下来n行每行包含m个整数,表示输入的图像。 输出格式
输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。
样例输入
2 3
1 5 3 3 2 4 样例输出
3 4
5 2 1 3 评测用例规模与约定
1 ≤ n, m ≤ 1,000,矩阵中的数都是不超过1000的非负整数。
|
题解:尴尬,提交超时,2层for循环+1层for循环,参考了一种写法,猜测j*m比较费时??计算机做乘法运算比按位寻址耗时叭
超时代码
1 n1, m1 = input().split() 2 3 n = int(n1) 4 m = int(m1) 5 a = [] 6 7 for i in range(n): 8 tmp = input().split() 9 a = a + tmp 10 11 for i in range(1, m+1): 12 for j in range(1, n+1): 13 if j != n: 14 print(a[j*m-i], end=" ") 15 else: 16 print(a[j*m-i]) 17 # a = a[::-1]
未超时代码
1 n, m =input().split() 2 n, m = int(n), int(m) 3 4 img1 = [] 5 for i in range(n): 6 a = input().split() 7 for j in range(len(a)): 8 a[j] = int(a[j]) 9 img1 += [a] 10 11 img2 = [] 12 for i in range(m-1, -1, -1): 13 tmp = [] 14 for j in range(n): 15 tmp += [img1[j][i]] 16 img2 += [tmp] 17 18 for i in range(m): 19 print(img2[i][0],end="") 20 for j in range(1,n): 21 print("", img2[i][j], end="") 22 print()