总是第一个样例过不了......在本地测结果是对的,一交上去就不对了。
[P1205] (https://www.luogu.com.cn/problem/P1205)
总是第一个样例过不了......在本地测结果是对的,一交上去就不对了。
#include <iostream>
#include <cstring>
using namespace std;
int n;
char s[15][15],t[15][15],b[15][15];
bool f1()
{
memset(b,0,sizeof(b));
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()
{
memset(b,0,sizeof(b));
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()
{
memset(b,0,sizeof(b));
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()
{
memset(b,0,sizeof(b));
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()
{
memset(b,0,sizeof(b));
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++)
{
s[i][j] = b[i][j];
}
}
if (f1()) return 1;
if (f2()) return 1;
if (f3()) return 1;
}
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()
{
cin >> 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;
cout << endl;
return 0;
}