1. 程式人生 > >ccf_201503-1_影象旋轉(java&c++)

ccf_201503-1_影象旋轉(java&c++)

試題編號: 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的非負整數。

java:

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int m = sc.nextInt();
		int n = sc.nextInt();
		int[][] arr = new int[m][n];
		for(int i = 0; i < m; i++) {
			for(int j = 0; j < n; j++) {
				arr[i][j] = sc.nextInt();
			}
		}
		sc.close();
		for(int i = 0; i < n; i++) {
			for(int j = 0; j < m; j++) {
				System.out.print(arr[j][n-1-i] + " ");
			}
			System.out.println();
		}
	}
}

c++:

#include<iostream>
using namespace std;
int a[1000][1000];
int main() {
    int m, n;
    int i, j;  
    cin>>n>>m;
        for (i = 0; i < n; i++)
		{
            for (j = 0; j < m; j ++) 
			{  
                cin>>a[i][j];
            }
        } 
        for (i = 1; i <= m; i++)
		{
            for (j = 0; j < n; j ++)
			{              
                if (j == n-1)
				{
                    cout<<a[j][m-i]<<endl;
                }
				else 
				{
                    cout<<a[j][m-i]<<" ";
                }
            }
        }
    return 0;
}