奇怪的问题
  • 板块灌水区
  • 楼主molly1212
  • 当前回复11
  • 已保存回复11
  • 发布时间2024/8/21 18:32
  • 上次更新2024/8/21 20:49:29
查看原帖
奇怪的问题
556017
molly1212楼主2024/8/21 18:32

为什么P1205我第一个测试点一直过不了?下载了数据后发现我的输出是对的啊!怎么搞的?

#include <bits/stdc++.h>
using namespace std;
int n;
char s[15][15],t[15][15],b[15][15];
bool f1()
{
	for (int i = 1;i <= n;i++)
        for (int j = 1;j <= n;j++)
			b[j][n-i+1] = s[i][j];
    for (int i = 1;i <= n;i++)
    	for (int j = 1;j <= n;j++)
			if(b[i][j] != t[i][j]) return 0;
    return 1;
}
bool f2()
{
	for (int i = 1;i <= n;i++)
        for (int j = 1;j <= n;j++)
			b[n-i+1][n-j+1] = s[i][j];
	for (int i = 1;i <= n;i++)
    	for (int j = 1;j <= n;j++)
			if(b[i][j] != t[i][j]) return 0;
	return 1;
}
bool f3()
{
	for (int i = 1;i <= n;i++)
        for (int j = 1;j <= n;j++)
			b[n-j+1][i] = s[i][j];
	for (int i = 1;i <= n;i++)
    	for (int j = 1;j <= n;j++)
			if(b[i][j] != t[i][j]) return 0;
	return 1;
}
bool f4()
{
	for (int i = 1;i <= n;i++)
        for (int j = 1;j <= n;j++)
			b[i][n-j+1] = s[i][j];
	for (int i = 1;i <= n;i++)
    	for (int j = 1;j <= n;j++)
			if(b[i][j] != t[i][j]) return 0;
	return 1;
}
bool f5()
{
	f4();
	for (int i = 1;i <= n;i++)
	{
		for (int j = 1;j <= n;j++)
		{
			s[i][j] = b[i][j];
		}
	}
	if (f1()) return 1;
	if (f2()) return 2;
	if (f3()) return 3;
}
bool f6()
{
	for (int i = 1;i <= n;i++)
	{
		for (int j = 1;j <= n;j++)
		{
			if (s[i][j] != t[i][j]) return 0;
		}
	}
	return 1;
}
int main()
{
	scanf("%d",&n);
	for (int i = 1;i <= n;i++)
	{
		for (int j = 1;j <= n;j++)
		{
			cin >> s[i][j];
		}
	}
	for (int i = 1;i <= n;i++)
	{
		for (int j = 1;j <= n;j++)
		{
			cin >> t[i][j];
		}
	}
	if (f1()) cout << 1;
	else if (f2()) cout << 2;
	else if (f3()) cout << 3;
	else if (f4()) cout << 4;
	else if (f6()) cout << 6;
	else if (f5()) cout << 5;
	else cout << 7;
	puts("");
	return 0;
}

数据点:
in:
3
---
---
---
---
-@-
---

out:
7

2024/8/21 18:32
加载中...