2017-03-12 207 views
0

我知道,算法90度順時針旋轉矩陣:90 * n度旋轉矩陣CW

for (int i=0; i<N/2; ++i) 
    for (int j=0; j<(N+1)/2; ++j) 
     { 
      int c = A[i][j]; 
      A[i][j] = A[N-j-1][i]; 
      A[N-j-1][i] = A[N-i-1][N-j-1]; 
      A[N-i-1][N-j-1] = A[j][N-i-1]; 
      A[j][N-i-1] = c; 
     } 

我需要(和可以嗎?)來修改算法或我可以做到這一點n次旋轉矩陣由90*n度(其中n所屬Z(整數))?

回答

0

2x旋轉是更快的翻轉。 3倍旋轉是反向旋轉,速度更快。 4x旋轉本身是最快的。所以你可以使用模數運算。

設f是一個函數數組。

if(n>=0) 
    f[n%4](); 
else 
    f[4-(-n)%4](); 

其中

f[0]=itself(); 
f[1]=rotate_cw(); 
f[2]=flip(); 
f[3]=rotate_ccw();