zoukankan      html  css  js  c++  java
  • CCF201503-1-图像旋转

    图像旋转

    原题连接:http://118.190.20.162/view.page?gpid=T27

    试题编号: 201503-1
    试题名称: 图像旋转
    时间限制: 5.0s
    内存限制: 256.0MB
    问题描述:
    问题描述
      旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。
      计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。
    输入格式
      输入的第一行包含两个整数nm,分别表示图像矩阵的行数和列数。
      接下来n行每行包含m个整数,表示输入的图像。
    输出格式
      输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。
    样例输入
    2 3
    1 5 3
    3 2 4
    样例输出
    3 4
    5 2
    1 3
    评测用例规模与约定
      1 ≤ n≤ 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()
  • 相关阅读:
    第五周课后作业
    第五周读书笔记
    PB16120853+JL17110067
    第一次个人作业报告
    《编程匠艺》读书笔记----第四周
    软工第一次个人作业博客(一)
    软工第一次个人作业博客(二)
    《程序员修炼之道》读书笔记(二)--第三周
    关于在aspx前台使用后台变量的问题
    sql语句优化SQL Server
  • 原文地址:https://www.cnblogs.com/z-712/p/13613800.html
Copyright © 2011-2022 走看看