P4924 [1007]魔法少女小Scarlet
题目链接
题目思路
顺时针转是第\(i\)行第\(j\)列的数字转移到第\(j\)行倒数第\(i\)列
\(temp[n - m + j][n + m - i] = g[i][j]\)
逆时针转是第\(i\)行第\(j\)列的数字转移到倒数第\(j\)行第\(i\)列
\(temp[n + m - j][m - n + i] = g[i][j]\)
题目代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 510;
int g[N][N], temp[N][N];
int n, m, t;
int main()
{
cin >> n >> m;
for(int i = 1; i <= n; i ++ )
for(int j = 1; j <= n; j ++ )
g[i][j] = ++ t;
while(m -- )
{
int x, y, r, z;
cin >> x >> y >> r >> z;
if(z == 0)
{
for(int i = x - r; i <= x + r; i ++ )
for(int j = y - r; j <= y + r; j ++ )
temp[x - y + j][x + y - i] = g[i][j];
for(int i = x - r; i <= x + r; i ++ )
for(int j = y - r; j <= y + r; j ++ )
g[i][j] = temp[i][j];
}
else
{
for(int i = x - r; i <= x + r; i ++ )
for(int j = y - r; j <= y + r; j ++ )
temp[x + y - j][y - x + i] = g[i][j];
for(int i = x - r; i <= x + r; i ++ )
for(int j = y - r; j <= y + r; j ++ )
g[i][j] = temp[i][j];
}
}
for(int i = 1; i <= n; i ++ )
{
for(int j = 1; j <= n; j ++ )
cout << g[i][j] << ' ';
puts("");
}
return 0;
}
孤独本是常态