28分求助!
查看原帖
28分求助!
815373
hu2265005977楼主2024/1/28 18:55

我是在参考了题解一后自己写的,但不知道哪里有问题,求大佬。(#1和#4测验点是对的)

#include<bits/stdc++.h>
using namespace std;
char a[11][11],b[11][11],c[11][11];
int n,k=1;
bool work1(){
    for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
    		if(b[j][n-i+1]!=c[i][j]) k=0;
	if(k==0) return 0;
    else return 1;
}
bool work2(){
    for(int i=1;i<=n;i++)
    	for(int j=1;j<=n;j++)
    		if(b[n-i+1][n-j+1]!=c[i][j]) k=0;
    if(k==0) return 0;
    else return 1;
}
bool work3(){
    for(int i=1;i<=n;i++)
    	for(int j=1;j<=n;j++)
    		if(b[n-j+1][i]!=c[i][j]) k=0;
    if(k==0) return 0;
    else return 1;
}
bool work4(){
    for(int i=1;i<=n;i++)
    	for(int j=1;j<=n;j++)
    		if(b[i][n-j+1]!=c[i][j]) k=0;
    if(k==0) return 0;
    else return 1;
}
bool work5(){
	for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        	c[i][n-j+1]=a[i][j];    
    if(work1()||work2()||work3()) return 1;
	else return 0;
}
bool work6(){
    for(int i=1;i<=n;i++)
    	for(int j=1;j<=n;j++)
    		if(b[i][j]!=a[i][j]) k=0;
    if(k==0) return 0;
    else return 1;
}
void work(){
    if(work1()) cout<<1;
    else if(work2()) cout<<2;
    else if(work3()) cout<<3;
	else if(work4()) cout<<4;
	else if(work5()) cout<<5;
	else if(work6()) cout<<6;
	else cout<<7;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			cin>>a[i][j];c[i][j]=a[i][j];
		}
		 
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			cin>>b[i][j];
	work();
	return 0;
}
2024/1/28 18:55
加载中...