CCF NOI1049 旋转图像

问题链接CCF NOI1049 旋转图像




时间限制: 1000 ms  空间限制: 262144 KB

题目描述

  输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。

输入

  第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。
  接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。

输出

  m行,每行n个整数,为顺时针旋转90度后的图像。相邻两个整数之间用单个空格隔开。

样例输入

3 3
1 2 3
4 5 6
7 8 9
样例输出

7 4 1
8 5 2
9 6 3

数据范围限制

  1 <= n <= 100,1 <= m <= 100。




问题分析

  这是一个矩阵旋转问题,在程序中就是一个二维数组的值旋转输出问题

  关键是下标的映射关系,找到这种映射关系,程序就简单了。

程序说明

  (略)

要点详解
  • 先定义一个符号常量,再用它来定义二维数组,可以使得程序的通用性得到提高
  • 二维数组下标的映射关系。



参考链接CCF201503-1 图像旋转(100分)

100分通过的C语言程序:

#include <stdio.h>

#define N 100

int a[N][N];

int main(void)
{
    int n, m, i, j;

    scanf("%d%d", &n, &m);
    for(i=0; i<n; i++)
        for(j=0; j<m; j++)
            scanf("%d", &a[i][j]);

    for(j=0; j<m; j++) {
        for(i=0; i<n; i++) {
            if(i != 0)
                printf(" ");
            printf("%d", a[n - 1 - i][j]);
        }
        printf("\n");
    }

    return 0;
}



posted on 2017-04-25 17:33  海岛Blog  阅读(609)  评论(0编辑  收藏  举报

导航