记住一定要从1开始赋值
C++ 代码
#include<iostream>
#include<cstring>
using namespace std;
const int N = 510;
int f[N][N];
int temp[N][N];
int n, m;
int cnt = 0;
//表示顺时针的函数
void Sun(int x, int y, int r)
{
//先将原数组中的元素赋值到新的元素中
for(int i=x-r;i<=x+r;i++)
for (int j = y - r; j <= y + r; j++)
{
temp[i][j] = f[i][j];
}
int x1 = x + r;
int y1 = y - r;
for (int i = x - r; i <= x + r; i++)
{
for (int j = y - r; j <= y + r; j++)
{
f[i][j] = temp[x1--][y1];
}
x1 = x + r;
y1++;
}
}
//表示逆时针的函数
void Ni(int x, int y, int r)
{
for (int i = x - r; i <= x + r; i++)
{
for (int j = y - r; j <= y + r; j++)
{
temp[i][j] = f[i][j];
}
}
int y1 = y + r;
int x1 = x - r;
for (int i = x - r; i <= x + r; i++)
{
for (int j = y - r; j <= y + r; j++)
{
f[i][j] = temp[x1++][y1];
}
y1--;
x1 = x - r;
}
}
int main()
{
cin >> n >> m;
for(int i=1;i<=n;i++)
for (int j =1; j <=n; j++)
{
f[i][j] = ++cnt;
}
while (m--)
{
int x, y, r, z;
cin >> x >> y >> r >> z;
if (z == 0)
Sun(x, y, r);
else if(z==1)
Ni(x, y, r);
}
for (int i = 1; i <=n; i++)
{
for (int j = 1; j <=n; j++)
{
cout << f[i][j] << ' ';
}
cout << endl;
}
return 0;
}