洛谷 P4924 旋转矩阵
作者:
quiet_
,
2023-04-06 23:49:39
,
所有人可见
,
阅读 139
#include<bits/stdc++.h>
using namespace std;
const int N = 510;
int g[N][N], backup[N][N];
int n, m;
void trans(int x, int y, int r, int w)
{
int l = 2*r + 1;
for(int i = x - r ; i <= x + r ; i ++)
{
for(int j = y - r ; j <= y + r ; j ++)
{
if(w == 0)
{
g[x - y + j][y + x - i] = backup[i][j];
}
else
{
g[x + y - j][y - x + i] = backup[i][j];
}
}
}
memcpy(backup, g, sizeof g);
}
int main()
{
int k = 1;;
cin >> n >> m;
for(int i = 0 ; i < n ; i ++)
{
for(int j = 0 ; j < n ; j ++)
{
g[i][j] = k;
k ++;
}
}
memcpy(backup, g, sizeof g);
while(m --)
{
int x, y, r, w;
scanf("%d%d%d%d",&x,&y,&r,&w);
trans(x - 1, y - 1, r, w);
}
for(int i = 0 ; i < n ; i ++)
{
for(int j = 0 ; j < n ; j ++)
{
printf("%d ",g[i][j]);
}
printf("\n");
}
return 0;
}