```cpp
#include <iostream>
#include <string>
using namespace std;
int n;
bool transform1(string *a,string *b)//顺时针90
{
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if (a[n-1-j][i]!=b[i][j]) return false;
}
}
return true;
}
bool transform2(string *a,string *b)
{
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if (a[n-1-i][n-1-j]!=b[i][j]) return false;
}
}
return true;
}
bool transform3(string *a,string *b)
{
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if (a[j][n-1-i]!=b[i][j]) return false;
}
}
return true;
}
bool transform4(string *a,string *b)
{
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if (a[i][n-1-j]!=b[i][j]) return false;
}
}
return true;
}
bool transform5(string *a,string *b)
{
string temp[10];
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
temp[i][j]=a[i][n-1-j];
}
}
return (transform1(temp,b) || transform2(temp,b) || transform3(temp,b)) ;
}
bool transform6(string *a,string *b)
{
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if (a[i][j]!=b[i][j]) return false;
}
}
return true;
}
int main()
{
string a[10];
string b[10];
cin>>n;
for (int i=0;i<n;i++)
{
cin>>a[i];
}
for (int i=0;i<n;i++)
{
cin>>b[i];
}
if (transform1(a,b)) cout<<'1';
else if (transform2(a,b)) cout<<'2';
else if (transform3(a,b)) cout<<'3';
else if (transform4(a,b)) cout<<'4';
else if (transform5(a,b)) cout<<'5';
else if (transform6(a,b)) cout<<'6';
else cout<<'7';
return 0;
}
/*
*第二个和最后一个样例wa了
第二个样例Input:
5
-@@@-
-@@--
-@---
-----
-----
-----
----@
---@@
--@@@
-----
Output:
5
我明明输出的是5呀·······怎么就wa了呢·····?(醉了orz)
//妈诶,第一次发帖格式没控制好,见谅_(:з」∠)_
*/
```
by 北凉zero @ 2018-08-13 12:35:43
我也是,输出就是5,但是判我错。楼主现在解决了吗
by Tifo1998 @ 2018-08-30 16:05:48
我也是~
by BEqueN @ 2018-10-06 16:46:21
@[北凉zero](/space/show?uid=118024) @[Tifo1998](/space/show?uid=49378)
这么巧的吗???
```
/*
ID: halo_mi1
TASK: transform
LANG: C++
*/
#include<cstdio>
#include<cstring>
#define fre(x) freopen(#x".in", "r", stdin),freopen(#x".out", "w", stdout)
using namespace std;
int N;
char b[11][11], d[11][11], c[11][11], e[11][11];
bool check() {
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
if (b[i][j] != d[i][j])
return 0;
return 1;
}
bool dfs1(int now) {
if (now == 5) return 0;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
b[i][j] = e[j][N - i + 1];
if (check()) return 1;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
e[i][j] = b[i][j];
return dfs1(now + 1);
}
bool dfs2(int now) {
if (now == 3) return 0;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
b[i][j] = e[N - i + 1][N - j + 1];
if (check()) return 1;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
e[i][j] = b[i][j];
return dfs2(now + 1);
}
bool dfs3(int now) {
if (now == 5) return 0;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
b[i][j] = e[N - j + 1][i];
if (check()) return 1;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
e[i][j] = b[i][j];
return dfs3(now + 1);
}
bool dfs4(int now) {
if (now == 3) return 0;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
b[i][j] = e[i][N - j + 1];
if (check()) return 1;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
e[i][j] = b[i][j];
return dfs4(now + 1);
}
bool dfs5() {
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
b[i][j] = e[i][N - j + 1];
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
e[i][j] = b[i][j];
return dfs1(1) || dfs2(1) || dfs3(1);
}
int main() {
//fre(transform);
scanf("%d", &N); getchar();
for (int i = 1; i <= N; i++, getchar())
for (int j = 1; j <= N; j++)
c[i][j] = e[i][j] = b[i][j] = getchar();
for (int i = 1; i <= N; i++, getchar())
for (int j = 1; j <= N; j++)
d[i][j] = getchar();
if (dfs1(1)) {
printf("1\n");
return 0;
}
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
e[i][j] = b[i][j] = c[i][j];
if (dfs2(1)) {
printf("2\n");
return 0;
}
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
e[i][j] = b[i][j] = c[i][j];
if (dfs3(1)) {
printf("3\n");
return 0;
}
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
e[i][j] = b[i][j] = c[i][j];
if (dfs4(1)) {
printf("4\n");
return 0;
}
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
e[i][j] = b[i][j] = c[i][j];
if (dfs5()) {
printf("5\n");
return 0;
}
if (check()) {
printf("6\n");
return 0;
}
printf("7\n"); return 0;
}
```
by BEqueN @ 2018-10-06 16:46:57
我也是同求
by 夜雨声訉 @ 2019-05-19 17:01:22
我也是啊,因为这个我都被学长喷了
by 落花微雨 @ 2019-10-16 23:39:30
+1
by jijidawang @ 2020-01-28 14:56:06
同求
by 守夜人0808 @ 2020-03-16 22:49:16
哇所以到底怎么解决
by 无可奉告告 @ 2020-11-08 20:10:23
我之前也是这个问题,后来想到是换行符的问题 这里换行符是/r/n,要连续getchar()两次才能滤过换行
by 小丁小丁 @ 2021-01-30 14:37:40