#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=586,M=586;
int n,m,f[N][M],TURN[N][M];
void Turn(int x,int y,int r,int z)
{
if(r==0)
return ;
memset(TURN,0,sizeof(TURN));
if(z==1)//逆时针旋转
{
for(int i=x-r;i<=x+r;i++)
for(int j=y-r;j<=y+r;j++)
TURN[i][j]=f[i][j];
int h=x-r,l=y+r;
for(int i=x-r;i<=x+r;i++)
{
for(int j=y-r;j<=y+r;j++)
f[i][j]=TURN[h++][l];
h=x-r,l-=1;
}
}
else if(z==0)//顺时针旋转
{
for(int i=x-r;i<=x+r;i++)
for(int j=y-r;j<=y+r;j++)
TURN[i][j]=f[i][j];
int h=x+r,l=y-r;
for(int i=x-r;i<=x+r;i++)
{
for(int j=y-r;j<=y+r;j++)
f[i][j]=TURN[h--][l];
h=x+r,l+=1;
}
}
return ;
}
int main()
{
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++)
for(int j=1;j<=n;j++)
f[i+1][j]=i*n+j;//先初始 化
for(int i=1,x,y,r,z;i<=m;i++)
{
scanf("%d %d %d %d",&x,&y,&r,&z);
Turn(x,y,r,z);
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
printf("%d ",f[i][j]);
printf("\n");
}
return 0;
}
最后一个点T掉了
除了O2还有其他的方法嘛