旋转/转置2d阵列的最佳方法是什么?

时间:2015-02-02 01:24:39

标签: arrays rotation 2d

我被困在如何将整个桌子旋转90度。所以如果我有一个像下面这样的2D数组

{
 {0,0,1,0}
,{0,1,1,0}
,{0,1,0,0}
,{0,0,0,0}
}

什么是最好的旋转或转换该数组的整个表90度。所以后旋转应该看起来像这样

{
 {0,0,0,0}
,{0,1,1,0}
,{0,0,1,1}
,{0,0,0,0}
}

1 个答案:

答案 0 :(得分:2)

让我们调用第一个数组A和第二个数组B. 请注意,数组A中的一列成为旋转数组B中的一行(A中的第一列成为B中的第一行),A中第一列的第一个元素成为B中第一行的最后一个元素,第二个成为第三个,第三个成为第二个...... 所以我认为代码看起来像这样:

for(int i=0; i<N; i++)
{
   for(int j=0; j<N; j++)
   {
      B[j][N-1-i]=A[i][j];
   }
} // where N is the size of your array

我的解释&#34;可能有点令人困惑,但我希望代码可以工作

假设您的阵列A的大小是NxN,如果您的阵列不是正方形但是它的大小为NxM,那么B阵列的大小是MxN,代码中唯一改变的是: / p>

for(int j=0; j<M; j++) 

在第二个&#34; for&#34;