zoukankan      html  css  js  c++  java
  • CCF CSP 201503-1 图像旋转 (降维)

    题目链接: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的非负整数。

    我的思路是:先将二维数组降维并存入长度为n*m的一维数组,然后按照以列逆序以行正序的方式逐个存入新的二维数组中,最后输出新的二维数组

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cmath> 
     4 #include <string>
     5 #include <cstring>
     6 using namespace std;
     7 int n,m,sum;
     8 int a[1000005];
     9 int b[1005][1005];
    10 int main()
    11 {
    12     while(cin>>n>>m){
    13         sum=n+m;
    14         for(int i=0;i<n*m;i++) cin>>a[i];
    15         int t=0,flag=0;
    16         for(int j=0;j<n;j++){
    17             for(int i=m-1;i>=0;i--){
    18                 b[i][j]=a[t++];
    19                 if(t==n*m){
    20                     flag=1;
    21                     break;
    22                 }
    23             }
    24             if(flag) break;
    25         }
    26         for(int i=0;i<m;i++){
    27             for(int j=0;j<n;j++){
    28                 if(j==0) cout<<b[i][j];
    29                 else cout<<" "<<b[i][j];
    30             }
    31             cout<<endl;
    32         }
    33     }
    34     return 0;
    35 }
  • 相关阅读:
    String系列
    java初始化构造函数调用顺序
    转发和重定向的区别
    HttpServletResponse对象
    JSP九大隐式对象
    关于异常
    MySQL下载、安装及启动
    MySQL的启动
    MySQL下载及安装
    U盘安装Win7操作系统
  • 原文地址:https://www.cnblogs.com/shixinzei/p/10729587.html
Copyright © 2011-2022 走看看