求助!!样例能过,但上交全红QAQ
查看原帖
求助!!样例能过,但上交全红QAQ
606172
hnu_youli楼主2021/11/25 20:35
#include<iostream>
using namespace std;

int arr[505][505];
int temp[505][505];
int n, m;

void show()
{
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			if(j!=n)
			{
				printf("%d ", arr[i][j]);
			}
			else
			{
				printf("%d", arr[i][j]);
			}
		}
		printf("\n");
	}
}

void tempToarr()//把temp的值赋给arr
{
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			arr[i][j] = temp[i][j];
		}
	}
}

void change0(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] = arr[j][i];
		}
	}
	tempToarr();
	int ex = 0;
	for (int i = y - r; i <= y + r; i++)
	{
		for (int j = x - r; j <= x + r; j++)
		{
			temp[j][i] = arr[j][y + r - ex];
		}
		ex++;
	}
	tempToarr();
}

void change1(int x, int y, int r)//逆时针
{
	change0(x, y, r);
	change0(x, y, r);
	change0(x, y, r);
}

int main()
{
	scanf("%d %d", &n, &m);
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			arr[i][j] = j + (i - 1)*n;
			temp[i][j] = j + (i - 1)*n;
		}
	}

	for (int i = 1; i <= m; i++)
	{
		int x, y, r, z;
		cin >> x >> y >> r >> z;
		if (z == 0)
		{
			change0(x, y, r);
		}
		else if (z == 1)
		{
			change1(x, y, r);
		}
	}
	show();
	

	return 0;
}
2021/11/25 20:35
加载中...