我是在参考了题解一后自己写的,但不知道哪里有问题,求大佬。(#1和#4测验点是对的)
#include<bits/stdc++.h>
using namespace std;
char a[11][11],b[11][11],c[11][11];
int n,k=1;
bool work1(){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[j][n-i+1]!=c[i][j]) k=0;
if(k==0) return 0;
else return 1;
}
bool work2(){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[n-i+1][n-j+1]!=c[i][j]) k=0;
if(k==0) return 0;
else return 1;
}
bool work3(){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[n-j+1][i]!=c[i][j]) k=0;
if(k==0) return 0;
else return 1;
}
bool work4(){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[i][n-j+1]!=c[i][j]) k=0;
if(k==0) return 0;
else return 1;
}
bool work5(){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
c[i][n-j+1]=a[i][j];
if(work1()||work2()||work3()) return 1;
else return 0;
}
bool work6(){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[i][j]!=a[i][j]) k=0;
if(k==0) return 0;
else return 1;
}
void work(){
if(work1()) cout<<1;
else if(work2()) cout<<2;
else if(work3()) cout<<3;
else if(work4()) cout<<4;
else if(work5()) cout<<5;
else if(work6()) cout<<6;
else cout<<7;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>a[i][j];c[i][j]=a[i][j];
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>b[i][j];
work();
return 0;
}