为什么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