86求助测试点5过不了
查看原帖
86求助测试点5过不了
1193780
wuhusjqif楼主2023/12/26 17:18
#include<bits/stdc++.h>
using namespace std;
int n;
char a[15][15];//比对数组
char b[15][15];//利用b旋转后把值放入a
char c[15][15];//最终数组
char d[15][15];//存放初始元素
void inItia(){//初始化函数
	for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j)
		a[i][j]=d[i][j];
	}
}
void spin(){//90度旋转函数
	memset(b,0,sizeof(b));
	int row,col=n;
	for(int i=1;i<=n;i++){
		row=1;
		for(int j=1;j<=n;++j){
			b[row][col]=a[i][j];
			row++;
		}
		col--;
	}
	for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j)
		a[i][j]=b[i][j];
	}
}
void turn(){//翻转函数
	int row;char temp;
	for(int i=1;i<=n/2;++i){
		row=1;
		while(row<=n){
			temp=a[row][i];
			a[row][i]=a[row][n+1-i];
			a[row][n+1-i]=temp;
			row++;
		}
	}
}
bool match(){//比对函数
	for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j){
			if(a[i][j]!=c[i][j])
			return false;
		}
	}
	return true;
}
int main(){
	cin >> n;
	for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j)
		cin >> d[i][j];
	}
	inItia();
	for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j)
		cin >> c[i][j];
	}
	if(match()) {
	    cout << '6';
	    return 0;
	}
	for(int i=1;i<=3;++i){
		spin();
		if(match()){
			cout << i;
			return 0;
		}
	}
	inItia();
	turn();
	if(match()){
		cout << '4';
		return 0;
	}
	for(int i=0;i<3;++i){
		spin();
		if(match()){
			cout << '5';
			return 0;
		}
		
	}
	cout << '7';
	
}
2023/12/26 17:18
加载中...