1. 程式人生 > >CCF NOI1049. 旋轉影象 (C++)

CCF NOI1049. 旋轉影象 (C++)

1049. 旋轉影象

題目描述

輸入一個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。

C++程式碼

#include <iostream>
#include <cassert>

using namespace std;

int main()
{
    const int N = 100;
    const int M = 100;
    int PixelMatrix[N][M];
    int NewPixelMatrix[M][N];

    int n, m;

    cin >> n >> m;

    assert(n>=1 && n<=N);
    assert
(m>=1 && m<=M); // input black white picture's pixel matrix data for(int row=1; row<=n; row++) { for(int col=1; col<=m; col++) { cin >> PixelMatrix[row-1][col-1]; assert(PixelMatrix[row-1][col-1]>=0 && PixelMatrix[
row-1][col-1]<=255); } } // rotate pixel matrix 90 degree clockwise for(int col=1; col<=m; col++) { for(int row=n; row>=1; row--) { NewPixelMatrix[col-1][n-row] = PixelMatrix[row-1][col-1]; } } // output new pixel matrix data for(int row=1; row<=m; row++) { for(int col=1; col<=n; col++) { cout << NewPixelMatrix[row-1][col-1] << " "; } cout << endl; } return 0; }