注:本题涉及的旋转法则还不是很理解
题目大致内容是将矩阵通过模拟的方式旋转,详见题目
#include<bits/stdc++.h>
using namespace std;
const int N = 510;
int num1[N][N],num2[N][N];
int n,m;
int main()
{
cin>>n>>m;
int tmp=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
num1[i][j]=tmp++;
}
}
while(m--)
{
int x,y,r,z;
cin>>x>>y>>r>>z;
if(!z)//顺
{
for(int i=x-r;i<=x+r;i++)
{
for(int j=y-r;j<=y+r;j++)
num2[x-y+j][x+y-i]=num1[i][j];//顺时针旋转规律
}
for(int i=x-r;i<=x+r;i++)
{
for(int j=y-r;j<=y+r;j++)
num1[i][j]=num2[i][j];
}
}
else //逆
{
for(int i=x-r;i<=x+r;i++)
{
for(int j=y-r;j<=y+r;j++)
num2[x+y-j][y-x+i]=num1[i][j];//逆时针旋转规律
}
for(int i=x-r;i<=x+r;i++)
{
for(int j=y-r;j<=y+r;j++)
num1[i][j]=num2[i][j];
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
printf("%d ",num1[i][j]);
printf("\n");
}
return 0;
}