旋转2D矩阵中的值

时间:2015-07-08 14:12:53

标签: algorithm multidimensional-array

所以我正在研究一个问题而我无法弄明白。至少我不满意。

如何在2D数组中旋转值。

所以如果数组是

windbg

旋转后应该是

!token

输入来自一个文件,其中第一个值是行数/列数。所以它可以是2 x2矩阵,3x 3矩阵,4x4矩阵等等。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

这不是一个算法,因为它是一个简单的解决方案。

我认为对此的答案可以由4个子方法组成:MoveTopRow()MoveBottomRow()MoveLeftColumn()MoveRightColumn()

一般来说,创建一个新矩阵并使用这些方法填充值。例如:

void MoveTopRow(int dimention)
{
     new_matrix[0][0] = old_matrix[1][0];
     for (int i = 1 ; i < dimention ; i++)
     {
         new_matrix[0][i] = old_matrix[0][i-1];
     }
}

我认为其余方法都是自我解释的......

答案 1 :(得分:0)

循环:

int x=0, y=0;
int prev = matr[0][0];
do{
if (x==0 && y<dim){ // move right on top row
    y++;
}
else if(y==dim-1 && x<dim){ // move down
    x++;
}
else if(x==dim-1 && y>0){ // move left on bottom row
    y--;
}
else{
    x--;
}
curr = matr[x][y];
matr[x][y] = prev;
prev = curr;
}while (x==0 && y==0);