CC150:將一個矩陣旋轉90度
一張圖像表示成n X n的矩陣,寫一個函數把圖像旋轉90度。不開辟額外的存儲空間
我們假設要將圖像逆時針旋轉90度。原圖如下所示:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
逆時針旋轉90度後的圖應該是:
4 8 12 16
3 7 11 15
2 6 10 14
1 5 9 13
我們要如何原地進行操作以達到上面的效果呢?可以分兩步 第一步交換主對角線兩側的對稱元素,
第二步交換第i行和第n-1-i行,即得到結果。 看圖示:
原圖: 第一步操作後: 第二步操作後:
1 2 3 4 1 5 9 13 4 8 12 16
5 6 7 8 2 6 10 14 3 7 11 15
9 10 11 12 3 7 11 15 2 6 10 14
13 14 15 16 4 8 12 16 1 5 9 13
#include
using namespace std;
void swap(int &x,int &y) {
int k = x;
x = y;
y = k;
}
void Transpote(int array[][4],int n) {
for(int i=0;i