```
//输入输出我习惯scanf,printf
#include<bits/stdc++.h>
using namespace std;
const int N=600;
//定义临时数组 swap会有问题
int a[N][N],ans[N][N];
int n,m,x,y,r,z;
int main(){
scanf("%d %d",&n,&m);
int p=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=p++;
while(m--){
scanf("%d %d %d %d",&x,&y,&r,&z);
if(z==0){
int up=x-r,down=x+r;
int le=y-r,ri=y+r;
for(int i=up;i<=down;i++){
for(int j=le;j<=ri;j++){
ans[x-y+j][x+y-i]=a[i][j];
}
}
for(int i=up;i<=down;i++)
for(int j=le;j<=ri;j++)
a[i][j]=ans[i][j];
}
else{
int up=x-r,down=x+r;
int le=y-r,ri=y+r;
for(int i=up;i<=down;i++){
for(int j=le;j<=ri;j++){
ans[x+y-j][y-x+i]=a[i][j];
}
}
for(int i=up;i<=down;i++){
for(int j=le;j<=ri;j++){
a[i][j]=ans[i][j];
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
```
by 123456789dd @ 2023-08-08 19:48:06
@[123456789dd](/user/1043825) 你好,这个写法上,没太能解释明白为什么swap会有问题
by AlexanderC @ 2023-08-08 20:15:56