我自己在电脑上试了几种都得到了正确的输出,但上传以后,只用第一个测试点通过,其他的测试点都表示读到的答案是7
#include <stdio.h>
int rotate_90 (char g[][10],char A[][10],int N,int cot);
int reflect_y (char a[][10],int N,char A[][10]);
int test (char B[][10],char A[][10],int N);
char e[10][10]={0};
char b[10][10]={0};
int main()
{
char a[10][10]={0};
char A[10][10]={0};
int N;
int c=0;
int r=0;
int m=0;
scanf("%d",&N);
getchar();
while(r<N){
a[r][c]=getchar();
c++;
if(c==N){
r++;
c=0;
getchar();
}
}
r=0;
c=0;
while(r<N){
A[r][c]=getchar();
c++;
if(c==N){
r++;
c=0;
getchar();
}
}
m=test(a,A,N);
if(m==1){
printf("6");
}else{
m=rotate_90(a,A,N,0);
if(m!=0){
printf("%d",m);
}else{
if(reflect_y(a,N,A)==1){
printf("4");
}else{
reflect_y(a,N,A);
m=rotate_90(e,A,N,0);
if(m!=0){
printf("5");
}else{
printf("7");
}
}
}
}
return 0;
}
int rotate_90 (char g[][10],char A[][10],int N,int cot)
{
int C=N-1;
int R=0;
int c=0;
int r=0;
while(r<N){
if(c<N){
b[R][C]=g[r][c];
R++;
c++;
}else if(c==N){
c=0;
R=0;
C--;
r++;
}
}
r=0;
c=0;
while(r<N){
g[r][c]=b[r][c];
c++;
if(c==N){
c=0;
r++;
}
}
if(cot==3){
return 0;
}
if(test(b,A,N)==1){
cot++;
return cot;
}else{
cot++;
return rotate_90(g,A,N,cot);
}
}
int reflect_y (char a[][10],int N,char A[][10])
{
int c=0;
int r=0;
while(c<N){
e[r][c]=a[r][N-c-1];
r++;
if(r==N){
c++;
r=0;
}
}
return test(e,A,N);
}
int test (char B[][10],char A[][10],int N)
{
int r=0;
int c=0;
int i;
while(r<N){
if(A[r][c]==B[r][c]){
i=1;
}else{
i=0;
break;
}
c++;
if(c==N){
r++;
c=0;
}
}
return i;
}