所以我正在研究一个问题而我无法弄明白。至少我不满意。
如何在2D数组中旋转值。
所以如果数组是
windbg
旋转后应该是
!token
输入来自一个文件,其中第一个值是行数/列数。所以它可以是2 x2矩阵,3x 3矩阵,4x4矩阵等等。
有人可以帮助我吗?
答案 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);