Pav*_*sky 51
for(int i=0; i<n/2; i++)
for(int j=0; j<(n+1)/2; j++)
cyclic_roll(m[i][j], m[n-1-j][i], m[n-1-i][n-1-j], m[j][n-1-i]);
void cyclic_roll(int &a, int &b, int &c, int &d)
{
int temp = a;
a = b;
b = c;
c = d;
d = temp;
}
Run Code Online (Sandbox Code Playgroud)
注意我没有测试过这个,现在只是现场组成.请在进行任何操作前进行测试.
这是我的解决方案:(顺时针旋转pi/2)
进行数组的转置,(如矩阵转置)
反转每行的元素
cons int row = 10;
cons int col = 10;
//transpose
for(int r = 0; r < row; r++) {
for(int c = r; c < col; c++) {
swap(Array[r][c], Array[c][r]);
}
}
//reverse elements on row order
for(int r = 0; r < row; r++) {
for(int c =0; c < col/2; c++) {
swap(Array[r][c], Array[r][col-c-1])
}
}
Run Code Online (Sandbox Code Playgroud)如果逆时针旋转pi/2
转置数组
按列顺序反转元素
永远不要测试代码!任何建议将不胜感激!