为什么我的测试点二vs上跟答案一样,为什么还被判错???
查看原帖
为什么我的测试点二vs上跟答案一样,为什么还被判错???
1148832
LabmemNo_012LzTopic楼主2024/6/10 17:00
#include <stdio.h>

int n;
char a[15][15], b[15][15],c[15][15],d[15][15],x;

int dz(void)
{
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			if (b[i][j] != a[i][j])return 0;
		}
	}
	return 1;
}

int bzq(void)
{
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			b[j][n - i + 1] = d[i][j];
		}
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			d[i][j] = b[i][j];
		}
	}
	if (dz())return 1;
	return 0;
}

int bzr(void)
{
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			b[i][n - j + 1] = c[i][j];
		}
	}
	if (dz())return 1;
	return 0;
}

int bzt(void)
{
	bzr();
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			d[i][j] = b[i][j];
		}
	}
	if (bzq())return 1;
	if (bzq())return 1;
	if (bzq())return 1;
	return 0;
}

int bzy(void)
{
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			b[i][j] = c[i][j];
		}
	}
	if (dz())return 1;
	return 0;
}

int bz(void)
{
	if (bzq())return 1;
	if (bzq())return 2;
	if (bzq())return 3;
	if (bzr())return 4;
	if (bzt())return 5;
	if (bzy())return 6;
	return 7;
}

int main()
{
	scanf("%d", &n);
	getchar();
	for (int i = 1; i <= n*2; i++)
	{
		int j = 1;
		while((x = getchar()) != '\n')
		{
			if (i <= n)
			{
				d[i][j] = c[i][j] = x;
			}
			else
			{
				a[i - n][j] = x;
			}
			j++;
		}
	}
	printf("%d", bz());
	return 0;
}
2024/6/10 17:00
加载中...