CCF.201503-1圖像旋轉(數組、格式題)

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

解法一 直接輸出

輸出時控制數組的下標即可,但在用例規模大的時候會出問題


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

		
	return 0; 	
} 


需要修改爲全局變量


#include <iostream>
#include <cstring>
const int N = 1000;
int matrix[N][N];
using namespace std;
int main()
{
	int n,m;
	cin>>m;
	cin>>n;
	//int aa[m][n];
	
    for(int i=0;i<m;i++){
    	for(int j=0;j<n;j++){
    		cin>>matrix[i][j];
		} 
    }
    
	for(int i=n-1;i>=0;i--){
    	for(int j=0;j<m;j++)
    		cout<<matrix[j][i]<<" ";
		cout<<endl;
	} 

		
	return 0; 	
} 


另一種輸出方法


#include <iostream>
using namespace std;
const int N = 1000;
int matrix[N][N]; 
int main()
{
    int n, m;
 
    // 輸入矩陣

    cin >> n >> m;
    // n 爲 行, m 爲 列
    for(int i=0; i<n; i++)
        for(int j=0; j<m; j++)
            cin >> matrix[i][j];
 
    // 輸出結果
    for(int j=1; j<=m; j++) {
        for(int i=0; i<n; i++) {
            if(i != 0)
                cout << " ";
            cout << matrix[i][m-j];
        }
        cout << endl;
    }
 
    return 0;
}

學習自 :https://blog.csdn.net/tigerisland45/article/details/54754756

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章