I Character Wheels
思路
顺时针旋转,坐标的变化为i , j --> j n-i+1,将逆时针转换成顺时针,模拟即可
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 1e2 + 10;
const int INF = 5e8 + 10;
char mp[maxn][maxn];
int n;
void print(){
for(int i = 1; i <= n; i++){
printf("%s\n", mp[i] + 1);
}
}
void change(int x){
char tem[maxn][maxn];
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
tem[i][j] = mp[i][j];
int j = x;
for(int i = x; i <= n - x + 1; i++)
tem[j][n - i + 1] = mp[i][j];
for(int i = x; i <= n - x + 1; i++)
tem[i][n - j + 1] = mp[j][i];
j = n - x + 1;
for(int i = x; i <= n - x + 1; i++)
tem[j][n - i + 1] = mp[i][j];
for(int i = x; i <= n - x + 1; i++)
tem[i][n - j + 1] = mp[j][i];
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
mp[i][j] = tem[i][j];
}
int main(){
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%s", mp[i] + 1);
}
int m; scanf("%d", &m);
while(m--){
char ch[10]; scanf("%s", ch);
if(ch[0] == 'P'){
print();
}else{
int x, y;
scanf("%d %d", &x, &y);
if(ch[0] == 'L'){///逆时针等价成顺时针
for(int i = 1; i <= 4 - y % 4; i++)
change(x);
}else{
for(int i = 1; i <= y % 4; i++)
change(x);
}
}
}
return 0;
}