Nxn 矩陣旋轉90度問題

2021-08-22 19:34:11 字數 1040 閱讀 1430

december 8, 2012

原文:given an image represented by an nxn matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees. can you do this in place?

譯文:一張影象表示成nxn的矩陣,影象中每個畫素是4個位元組,寫乙個函式把影象旋轉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行,(n=4,i=0,1,2,3)即得到結果。 看圖示:

原圖:           第一步操作後:	第二步操作後:

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 &a, int &b)

void transpose(int a[4], int n){

for(int i=0; i全書題解目錄:

cracking the coding interview–問題與解答

全書的c++**託管在github上:

矩陣旋轉90度

寫這道分形題的時候,發現旋轉部分不是很明白,就又回顧了一下矩陣旋轉90度的左邊變換關係。僅僅交換x,y座標不算矩陣旋轉90度,只能算矩陣順時針旋轉90度又左右旋轉了一下 可以畫圖或者畫x y座標軸將x,y互調試試 但是本題奇妙的是這按照形狀來說是順時針旋轉90度,但按數字來說正好是橫縱座標互換了。更...

矩陣旋轉90度

題目描述 給出乙個 n m 的整數矩陣,將這個矩陣順時針旋轉 90o 後輸出。輸入 第一行輸入兩個整數 n,m。1 n,m 200 接下來 n 行,每行輸入 m 個元素,表示輸入的矩陣。矩陣中的元素都是絕對值小於 10000 的整數。輸出 輸出 m 行,每行 n 個元素,表示旋轉後的矩陣。樣例輸入 ...

演算法 將矩陣逆時針旋轉90度

旋轉矩陣 rotation matrix 是在乘以乙個向量的時候有改變向量的方向但不改變大小的效果的矩陣。旋轉矩陣不包括反演,它可以把右手座標系改變成左手座標系或反之。所有旋轉加上反演形成了正交矩陣的集合。旋轉可分為主動旋轉與被動旋轉。主動旋轉是指將向量逆時針圍繞旋轉軸所做出的旋轉。被動旋轉是對座標...