求助
查看原帖
求助
531924
Hsl123456楼主2022/3/19 11:34

求助,只输出6和7

CODE:

#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<ctime>
#include<ios>
#include<iostream>
#include<float.h>
#include<map>
#include<string>
#include<queue>
#include<vector>

using namespace std;

int n;
char yuan[15][15],ans[15][15],now[15][15],now1[15][15];
//原图形          目标图形     处理后图形   备份 
bool check(){//判断函数 
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++){
			if(now[i][j]!=ans[i][j])return false;
		}
	return true;
}

bool ans1(){//翻转90度 
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++)
	       now[i][j]=yuan[n-1-j][i];
	return check();
}

bool ans2(){//翻转180度 
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++)
	    	now[i][j]=yuan[n-1-i][n-1-j];
	return check();
}

bool ans3(){//翻转270度 
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		    now[i][j]=yuan[j][n-1-i];
	return check();
}

bool ans4(){//反射 
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			now[i][n-j+1]=yuan[i][j];
	return check();
}

bool ans5(){//组合 
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			now[i][n-j+1]=yuan[i][j];
	for(int i=1;i<=n;i++)//备份 
	    for(int j=1;j<=n;j++)
	       now1[i][j]=now[i][j];
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++)
	       now[i][j]=now1[n-1-j][i];
	if(check()==true)return true;//反射+ 转90°
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			now[i][n-j+1]=yuan[i][j];
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++)
	       now[i][j]=now1[n-1-i][n-1-j];
	if(check()==true)return true;//反射+转180°
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			now[i][n-j+1]=yuan[i][j];
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++)
	       now[i][j]=now1[j][n-1-i];
	if(check()==true)return true;//反射+转270°
	return false; 
} 

int main(){
	cin>>n;
	cout<<n<<endl;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
			yuan[i][j]=getchar();
		getchar();
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
			ans[i][j]=getchar();
		getchar();
	}
	
	bool flag=0;//6
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++){
			if(yuan[i][j]!=ans[i][j]){
				flag=1;
				i=n+1;
			}
		}
	if(flag==0){
		cout<<6;
		return 0;
	}
		
	if(ans1()==true){
		cout<<1;
		return 0;
	}
	if(ans2()==true){
		cout<<2;
		return 0;
	}
	if(ans3()==true){
		cout<<3;
		return 0;	
	}
	if(ans4()==true){
		cout<<4;
		return 0;
	}
	if(ans5()==true){
		cout<<5;
		return 0;
	}else{
		cout<<7;
    	return 0;
	}
}
2022/3/19 11:34
加载中...