旋转/转置二维数组的最佳方法是什么

问题描述 投票:0回答:1

我不知道如何将整个桌子旋转 90 度。所以如果我有一个如下所示的二维数组

{
 {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}
}
arrays rotation 2d
1个回答
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

我的“解释”可能有点令人困惑,但我希望代码能够工作。

假设数组 A 的大小为 NxN,如果数组不是正方形,但大小为 NxM,则 B 数组的大小为 MxN,代码中唯一更改的是:

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

在第二个“为”

© www.soinside.com 2019 - 2024. All rights reserved.