暴力代码详解
#include<bits/stdc++.h>
using namespace std;
int n;
bool a[11][11];
bool aa[11][11];
bool b[11][11];
bool c[11][11];
void turn90()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
c[j][n-i+1]=a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=c[i][j];
return ;
}
void flip()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
c[i][n-j+1]=a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=c[i][j];
return ;
}
bool isTurn90()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=aa[i][j];
turn90();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[i][j]!=a[i][j])
return false;
return true;
}
bool isTurn180()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=aa[i][j];
turn90();
turn90();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[i][j]!=a[i][j])
return false;
return true;
}
bool isTurn270()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=aa[i][j];
turn90();
turn90();
turn90();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[i][j]!=a[i][j])
return false;
return true;
}
bool isFlip()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=aa[i][j];
flip();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[i][j]!=a[i][j])
return false;
return true;
}
bool isMultiple90()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=aa[i][j];
flip();
turn90();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[i][j]!=a[i][j])
return false;
return true;
}
bool isMultiple180()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=aa[i][j];
flip();
turn90();
turn90();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[i][j]!=a[i][j])
return false;
return true;
}
bool isMultiple270()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=aa[i][j];
flip();
turn90();
turn90();
turn90();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[i][j]!=a[i][j])
return false;
return true;
}
bool isMultiple()
{
if(isMultiple90() || isMultiple180() || isMultiple270())
return true;
return false;
}
bool noTurn()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=aa[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[i][j]!=a[i][j])
return false;
return true;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
string s;
cin>>s;
for(int j=1;j<=n;j++)
{
if(s[j-1]=='@')
a[i][j]=1;
else
a[i][j]=0;
}
}
for(int i=1;i<=n;i++)
{
string s;
cin>>s;
for(int j=1;j<=n;j++)
{
if(s[j-1]=='@')
b[i][j]=1;
else
b[i][j]=0;
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
aa[i][j]=a[i][j];
if(isTurn90())
printf("1");
else if(isTurn180())
printf("2");
else if(isTurn270())
printf("3");
else if(isFlip())
printf("4");
else if(isMultiple())
printf("5");
else if(noTurn())
printf("6");
else
printf("7");
return 0;
}