二维矩阵中的旋转值



所以我在看一个问题,我只是不能弄清楚。至少在任何方面我都不满意。

如何在二维数组中旋转值

如果数组是

1 2 3
4 5 6
7 8 9

旋转后应该是

4 1 2
7 5 3
8 9 6

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

谁能帮我一下吗?

循环:

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);

与其说这是一个算法,不如说是一个简单的解决方案。

我认为这个问题的答案可以由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];
     }
}

相关内容

  • 没有找到相关文章

最新更新