代码
#include<bits/stdc++.h>
using namespace std ;
int n ;
char ch ;
int a[12][12],b[12][12],c[12][12] ;
void f() {
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
b[i][j]=a[i][j] ;
}
bool check() {
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(b[i][j]!=c[i][j])
return 0 ;
return 1 ;
}
bool turn90() {
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
b[j][n-i+1]=a[i][j] ;
return check() ;
}
bool turn180() {
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
b[n-i+1][n-j+1]=a[i][j] ;
return check() ;
}
bool turn270() {
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
b[n-j+1][i]=a[i][j] ;
return check() ;
}
bool _swap() {
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
b[i][n-j+1]=a[i][j] ;
return check() ;
}
bool do_nothing() {
return check() ;
}
bool zuhe() {
_swap() ;
if(turn90())return 1 ;
f() ;
_swap() ;
if(turn180())return 1 ;
f() ;
_swap() ;
if(turn270())return 1 ;
return 0 ;
}
int main() {
cin>>n ;
for(int i=1;i<=n;++i) {
for(int j=1;j<=n;++j) {
cin>>ch ;
a[i][j]=(ch=='@') ;
}
}for(int i=1;i<=n;++i) {
for(int j=1;j<=n;++j) {
cin>>ch ;
c[i][j]=(ch=='@') ;
}
}
f() ;
if(turn90()) {
cout<<1 ;
f() ;
}else if(turn180()) {
cout<<2 ;
f() ;
}else if(turn270()) {
cout<<3 ;
f() ;
}else if(_swap()) {
cout<<4 ;
f() ;
}else if(zuhe()) {
cout<<5 ;
f() ;
}else if(do_nothing()) {
cout<<6 ;
}else {
cout<<7 ;
}
return 0 ;
}
#2的数据下载下来是
5
-@@@-
-@@--
-@---
-----
-----
-----
----@
---@@
--@@@
-----
按理来说输出是 7
但是实际上输出是 5