求助,我自己试了是正确的,上传以后得到的输出都是7
查看原帖
求助,我自己试了是正确的,上传以后得到的输出都是7
1576696
KatsuraJiu楼主2024/11/23 16:39

我自己在电脑上试了几种都得到了正确的输出,但上传以后,只用第一个测试点通过,其他的测试点都表示读到的答案是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;
}
2024/11/23 16:39
加载中...