发现一个两年前没A的题,今天又来弄一下发现还是10分。。。但是试了很多例子都没问题。。。求助各位大佬帮我看一下:
#include <cstdio>
#include <iostream>
using namespace std;
int Matrix[505][505];
inline void turn(int a, int b, int x, int y, bool z)
{
int cop[505][505];
for(register int i = a; i <= x; i += 1)
for(register int j = b; j <= y; j += 1)
cop[i][j] = Matrix[i][j];
if(z)//逆时针
for(register int i = a; i <= x; i += 1)
for(register int j = b; j <= y; j += 1)
Matrix[y-j+b][i] = cop[i][j];
else
for(register int i = a; i <= x; i += 1)
for(register int j = b; j <= y; j += 1)
Matrix[j][x-i+a] = cop[i][j];
}
int main()
{
int n, m;
cin >> n >> m;
for(register int i = 1; i <= n; i += 1)
for(register int j = 1; j <= n; j += 1)
Matrix[i][j] = (i-1)*n + j;
int x, y, r, z;
while(m--)
{
scanf("%d%d%d%d", &x, &y, &r, &z);
turn(x-r, y-r, x+r, y+r, z);
}
for(register int i = 1; i <= n; i += 1)
{
for(register int j = 1; j <= n; j += 1)
printf("%d ", Matrix[i][j]);
puts("");
}
return 0;
}