42 lines
1.1 KiB
C++
42 lines
1.1 KiB
C++
#include <bits/stdc++.h>
|
||
|
||
using namespace std;
|
||
const int N = 510;
|
||
int n, m;
|
||
int x, y, r, z;
|
||
int tmp[N][N], res[N][N];
|
||
int cnt;
|
||
|
||
// 数组res为最后输出的结果数组,tmp为辅助数组;
|
||
int main() {
|
||
cin >> n >> m;
|
||
//初始化数据
|
||
for (int i = 1; i <= n; i++)
|
||
for (int j = 1; j <= n; j++)
|
||
res[i][j] = tmp[i][j] = ++cnt;
|
||
|
||
//读入魔法指令
|
||
while (m--) { // m次指令
|
||
cin >> x >> y >> r >> z;
|
||
|
||
//处理旋转
|
||
if (z == 0) { //顺时针
|
||
for (int i = -r; i <= r; i++)
|
||
for (int j = -r; j <= r; j++)
|
||
tmp[x + j][y - i] = res[x + i][y + j];
|
||
} else if (z == 1) { //逆时针
|
||
for (int i = -r; i <= r; i++)
|
||
for (int j = -r; j <= r; j++)
|
||
tmp[x - j][y + i] = res[x + i][y + j];
|
||
}
|
||
//复制回来
|
||
memcpy(res, tmp, sizeof tmp);
|
||
}
|
||
//输出
|
||
for (int i = 1; i <= n; i++) {
|
||
for (int j = 1; j <= n; j++)
|
||
printf("%2d ", res[i][j]);
|
||
printf("\n");
|
||
}
|
||
return 0;
|
||
} |