贴代码?
#include <bits/stdc++.h>
using namespace std;
bool sq[15][15],anssq[15][15],newsq[15][15];
int ans,n;
bool verify() {
for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(anssq[i][j]!=newsq[i][j]) return false;
return true;
}
bool nochange() {
for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(anssq[i][j]!=sq[i][j]) return false;
return true;
}
bool turn90() {
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
newsq[j][n-1-i]=sq[i][j];
}
}
return verify();
}
bool turn270() {
turn90();
turn90();
turn90();
return verify();
}
bool turn180() {
turn90();
turn90();
return verify();
}
bool mirror() {
int mid=n/2-1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++) newsq[j][n-1-i]=sq[j][i];
return verify();
}
bool comb() {
bool sq2[15][15],sq3[15][15];
memcpy(sq2,sq,sizeof(sq2));
mirror();
memcpy(sq,newsq,sizeof(sq));
if(turn90()) {
memcpy(sq,sq2,sizeof(sq));
return true;
}
else if(turn180()) {
memcpy(sq,sq2,sizeof(sq));
return true;
}
else if(turn270()) {
memcpy(sq,sq2,sizeof(sq));
return true;
}
else {
memcpy(sq,sq2,sizeof(sq));
return false;
}
}
int main(void) {
cin>>n;
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) sq[i][j]=(getchar()=='@'?1:0);
getchar();
}
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) anssq[i][j]=getchar();
getchar();
}
if(turn90()) cout<<1;
else if(turn180()) cout<<2;
else if(turn270()) cout<<3;
else if(mirror()) cout<<4;
else if(comb()) cout<<5;
else if(nochange()) cout<<6;
else cout<<7;
return 0;
}
不知道为啥是错的(只能AC第一个点,一直输出都是7)
求大佬们解答蒟蒻的问题