代码:
#include <bits/stdc++.h>
using namespace std;
#define N 9
int judge_0(int n, int a[N][N], int b[N][N])
{
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(a[i][j]!=b[i][j]) return 0;
}
}
return 1;
}
int judge_90(int n, int a[N][N], int b[N][N]) //对角线对称+按照中间行对称
{
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(a[i][j]!=b[j][n-i-1]) return 0;
}
}
return 1;
}
int judge_180(int n, int a[N][N], int b[N][N]) // 按照中间行对称
{
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(a[i][j]!=b[n-i-1][n-j-1]) return 0;
}
}
return 1;
}
int judge_270(int n, int a[N][N], int b[N][N]) //对角线对称
{
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(a[i][j]!=b[n-j-1][i]) return 0;
}
}
return 1;
}
void ans_output(int ans[4])
{
int p = 0;
for(int i=0; i<4; i++)
{
if(ans[i]!=0)
{
p = 1;
break;
}
}
if(p) //说明值不全为0
{
for(int j=0; j<4; j++)
{
if(ans[j]==1)
{
int answer = j*90;
cout<<answer<<endl;
return;
}
}
}
else //说明值全为0
{
cout<<-1<<endl;
}
}
int main()
{
int n=0;
int a[N][N]={0};
int b[N][N]={0};
while(cin>>n)
{
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
cin>>a[i][j];
}
}
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
cin>>b[i][j];
}
}
// 用数组存储结果
int ans[4]={0};
ans[0]=judge_0(n, a, b);
ans[1]=judge_90(n, a, b);
ans[2]=judge_180(n, a, b);
ans[3]=judge_270(n, a, b);
ans_output(ans);
}
return 0;
}