/*
ID:15521201
LANG:C++
PROG:transform
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char origin[15][15];
char change[15][15];
char mirror[15][15];
int n;
int main()
{
freopen("transform.in","r",stdin);
freopen("transform.out","w",stdout);
int result=0;
cin>>n;
int a_90();
int a_180();
int a_270();
int b_90();
int b_180();
int b_270();
int m();
int o();
for(int i=0;i<n;i++)
{
cin>>origin[i];
}
for(int i=0;i<n;i++)
{
cin>>change[i];
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
mirror[i][n-1-j]=origin[i][j];
mirror[i][n]='\0';
}
if(a_90()==1)result=1;
else if(a_180()==1)result=2;
else if(a_270()==1)result=3;
else if(m()==1)result=4;
else if(b_90()==1||b_180()==1||b_270()==1)result=5;
else if(o()==1)result=6;
else result=7;
cout<<result<<endl;
return 0;
}
int m()
{
int t=1;
for(int i=0;i<n;i++)
if(strcmp(mirror[i],change[i])!=0)
{
t=0;
break;
}
return(t);
}
int o()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(origin[i][j]!=change[i][j])
{
t=0;
break;
}
return (t);
}
int a_90()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(origin[i][j]!=change[j][n-1-i])
{
t=0;
break;
}
return (t);
}
int a_180()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(origin[i][j]!=change[n-1-i][n-1-j])
{
t=0;
break;
}
return (t);
}
int a_270()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(origin[i][j]!=change[n-1-j][i])
{
t=0;
break;
}
return (t);
}
int b_90()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(mirror[i][j]!=change[j][n-1-i])
{
t=0;
break;
}
return (t);
}
int b_180()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(mirror[i][j]!=change[n-1-i][n-1-j])
{
t=0;
break;
}
return (t);
}
int b_270()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(mirror[i][j]!=change[n-1-j][i])
{
t=0;
break;
}
return (t);
}
列举所有情况 一开始是准备根据不同情况 弄出来新的二维数组 然后写一个函数比较二维数组和改变后的函数,但是发现二维数组作为形参和实参的时要求很多(指针),
表示看了网上好多人说的都不能满足我需要的(每次传递二维数组时,最低维不一定相同),所以放弃这个想法,直接用原二维数组和变化后的二维数组比较,发现简单好多
23333333333333
ID:15521201
LANG:C++
PROG:transform
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char origin[15][15];
char change[15][15];
char mirror[15][15];
int n;
int main()
{
freopen("transform.in","r",stdin);
freopen("transform.out","w",stdout);
int result=0;
cin>>n;
int a_90();
int a_180();
int a_270();
int b_90();
int b_180();
int b_270();
int m();
int o();
for(int i=0;i<n;i++)
{
cin>>origin[i];
}
for(int i=0;i<n;i++)
{
cin>>change[i];
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
mirror[i][n-1-j]=origin[i][j];
mirror[i][n]='\0';
}
if(a_90()==1)result=1;
else if(a_180()==1)result=2;
else if(a_270()==1)result=3;
else if(m()==1)result=4;
else if(b_90()==1||b_180()==1||b_270()==1)result=5;
else if(o()==1)result=6;
else result=7;
cout<<result<<endl;
return 0;
}
int m()
{
int t=1;
for(int i=0;i<n;i++)
if(strcmp(mirror[i],change[i])!=0)
{
t=0;
break;
}
return(t);
}
int o()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(origin[i][j]!=change[i][j])
{
t=0;
break;
}
return (t);
}
int a_90()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(origin[i][j]!=change[j][n-1-i])
{
t=0;
break;
}
return (t);
}
int a_180()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(origin[i][j]!=change[n-1-i][n-1-j])
{
t=0;
break;
}
return (t);
}
int a_270()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(origin[i][j]!=change[n-1-j][i])
{
t=0;
break;
}
return (t);
}
int b_90()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(mirror[i][j]!=change[j][n-1-i])
{
t=0;
break;
}
return (t);
}
int b_180()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(mirror[i][j]!=change[n-1-i][n-1-j])
{
t=0;
break;
}
return (t);
}
int b_270()
{
int t=1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(mirror[i][j]!=change[n-1-j][i])
{
t=0;
break;
}
return (t);
}
列举所有情况 一开始是准备根据不同情况 弄出来新的二维数组 然后写一个函数比较二维数组和改变后的函数,但是发现二维数组作为形参和实参的时要求很多(指针),
表示看了网上好多人说的都不能满足我需要的(每次传递二维数组时,最低维不一定相同),所以放弃这个想法,直接用原二维数组和变化后的二维数组比较,发现简单好多
23333333333333