百思不得其解,到底哪里出问题了,感觉思路没有问题,代码也实在挑不出毛病,救救孩子吧!!!
#include<bits/stdc++.h>
using namespace std;
int n;
bool check(char x[12][12],char y[12][12])//检验
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(x[i][j]!=y[i][j])
{
return false;
}
}
}
return true;
}
int main()
{
scanf("%d",&n);
char p1[12][12],p2[12][12],p[12][12];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%c",&p1[i][j]);
if(p1[i][j]=='\n')
{
j--;
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%c",&p2[i][j]);
if(p2[i][j]=='\n')
{
j--;
}
}
}
for(int i=1;i<=n;i++)//顺时针旋转90°
{
for(int j=1;j<=n;j++)
{
p[i][j]=p1[n-j+1][i];
}
}
if(check(p,p2))
{
printf("1");
return 0;
}
for(int i=1;i<=n;i++)//顺时针旋转180°
{
for(int j=1;j<=n;j++)
{
p[i][j]=p1[n-i+1][n-j+1];
}
}
if(check(p,p2))
{
printf("2");
return 0;
}
for(int i=1;i<=n;i++)//顺时针旋转270°
{
for(int j=1;j<=n;j++)
{
p[i][j]=p1[j][n-i+1];
}
}
if(check(p,p2))
{
printf("3");
return 0;
}
for(int i=1;i<=n;i++)//水平翻转
{
for(int j=1;j<=n;j++)
{
p[i][j]=p1[i][n-j+1];
}
}
if(check(p,p2))
{
printf("4");
return 0;
}
int temp[12][12];
for(int i=1;i<=n;i++)//组合
{
for(int j=1;j<=n;j++)
{
temp[i][j]=p1[i][n-j+1];
}
}
for(int i=1;i<=n;i++)//顺时针旋转90°
{
for(int j=1;j<=n;j++)
{
p[i][j]=temp[n-j+1][i];
}
}
if(check(p,p2))
{
printf("5");
return 0;
}
for(int i=1;i<=n;i++)//顺时针旋转180°
{
for(int j=1;j<=n;j++)
{
p[i][j]=temp[n-i+1][n-j+1];
}
}
if(check(p,p2))
{
printf("5");
return 0;
}
for(int i=1;i<=n;i++)//顺时针旋转270°
{
for(int j=1;j<=n;j++)
{
p[i][j]=temp[j][n-i+1];
}
}
if(check(p,p2))
{
printf("5");
return 0;
}
if(check(p1,p2))
{
printf("6");
return 0;
}
printf("7");
return 0;
}