自己编的测试样例但提交只有14分
查看原帖
自己编的测试样例但提交只有14分
1284815
canwen楼主2024/4/5 21:28

232行,能看懂还能纠错的也算是巨佬的 解决了关注必须安排上!

代码:

#include<iostream>
using namespace std;
int main(){
	int n;char a;
	cin>>n;
	char yuanxian[n+1][n+1],zuizhong[n+1][n+1],tmp[n+1][n+1],tmp2[n+1][n+1];
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;){
			a=getchar();
			if(a!='\n') {
				yuanxian[i][j]=a;j++;
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;){
			a=getchar();
			if(a!='\n') {
				zuizhong[i][j]=a;j++;
			}
		}
	}
	int ii=1,jj=0;
	//顺时针旋转90°
	for(int j=1;j<=n;j++){
		
		for(int i=n;i>=1;i--){
			if(jj==n){
				
				ii++;
				jj=0;
			}
			jj++;
			tmp[ii][jj]=yuanxian[i][j];
		
		}
	} 
	int flag=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(tmp[i][j]!=zuizhong[i][j]){
				flag=1;break;
			}
		}
		if(flag) break;
	}
	if(!flag){
		cout<<1;return 0;	
	}
	//180
	ii=1;jj=0;
	for(int i=n;i>=1;i--){
		for(int j=n;j>=1;j--){
			
			if(jj==n){
				jj=0;
				ii++;
			}
			jj++;
			tmp[ii][jj]=yuanxian[i][j];
		}
	}
	flag=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(tmp[i][j]!=zuizhong[i][j]){
				flag=1;break;
			}
		}
		if(flag) break;
	}
	if(!flag){
		cout<<2;return 0;	
	}
	//270
	ii=1;jj=0;
	for(int j=n;j>=1;j--){
		for(int i=1;i<=n;i++){
				if(jj==n){
				jj=0;
				ii++;
			}
			jj++;
			tmp[ii][jj]=yuanxian[i][j];
		}
	}
	flag=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(tmp[i][j]!=zuizhong[i][j]){
				flag=1;break;
			}
		}
		if(flag) break;
	}
	if(!flag){
		cout<<3;return 0;	
	}
	//反射
	if(n%2==1){
		jj=n/2+1;
		for(int i=1;i<=n;i++){
			tmp[i][jj]=yuanxian[i][jj];
		} 
		for(int j=1;j<=n;j++){
			if(j==n/2+1) continue;
			for(int i=1;i<=n;i++){
				tmp[i][n-j+1]=yuanxian[i][j];
			}
		}
		flag=0;
		for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			
			if(tmp[i][j]!=zuizhong[i][j]) {
				flag=1;break;
			}
		}
		
		if(flag) break;
	   }
	   if(!flag){
	   	cout<<4;return 0;
	   } 
	}else{
		for(int j=1;j<=n;j++){
			for(int i=1;i<=n;i++){
				tmp[i][n-j+1]=yuanxian[i][j];
			}
		}
		flag=0;
		for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
		if(zuizhong[i][j]!=tmp[i][j]){
			flag=1;break;
		}	
		}
		if(flag) break;
	   }
	   if(!flag){
	   	cout<<4;return 0;
	   } 
		//反射2结束 
	}
	//模拟1~3开始:
	ii=1;jj=0;
	//顺时针旋转90°
	for(int j=1;j<=n;j++){
		
		for(int i=n;i>=1;i--){
			if(jj==n){
				
				ii++;
				jj=0;
			}
			jj++;
			tmp2[ii][jj]=tmp[i][j];
		}
	} 
	flag=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(zuizhong[i][j]!=tmp2[i][j]){
				flag=1;break;
			}
		}
		if(flag) break;
	}
	if(!flag){
		cout<<5;return 0;	
	}else{
		ii=1;jj=0;
	for(int i=n;i>=1;i--){
		for(int j=n;j>=1;j--){
			
			if(jj==n){
				jj=0;
				ii++;
			}
			jj++;
			tmp2[ii][jj]=tmp[i][j];
		}
	}
	flag=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(zuizhong[i][j]!=tmp2[i][j]){
				flag=1;break;
			}
		}
		if(flag) break;
	}
	if(!flag){
		cout<<5;return 0;	
	}else{
		//270
	ii=1;jj=0;
	for(int j=n;j>=1;j--){
		for(int i=1;i<=n;i++){
				if(jj==n){
				jj=0;
				ii++;
			}
			jj++;
			tmp[ii][jj]=tmp2[i][j];
		}
	}
	flag=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(zuizhong[i][j]!=tmp2[i][j]){
				flag=1;break;
			}
		}
		if(flag) break;
	}
	if(!flag){
		cout<<5;return 0;	
	}
	}
	}
	//模拟1~3结束 
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(yuanxian[i][j]!=zuizhong[i][j]) {
				cout<<7;return 0;
			}
		}
	}
	cout<<6;
	return 0;
}
2024/4/5 21:28
加载中...