#include<bits/stdc++.h>
#define il inline
using namespace std;
typedef long long ll;
inline int R(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch&15);ch=getchar();}return x*f;
}
const int N=12,d[9]={0,2,3,4,5,6,7,8,0};
int n,cnt;
char c[N][N][N];//0 初始;1 目标;2 90度翻转;3 180度翻转
//4 270度翻转;5 水平翻转;6~8 分别组合2~4和5
namespace turn{
il void turn_90(int x,int y){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
c[y][j][n-i+1]=c[x][i][j];
}
il void turn_mid(int x,int y){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
c[y][i][n-j+1]=c[x][i][j];
}
il bool check(int x,int y){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(c[x][i][j]!=c[y][i][j])
return false;
return true;
}
}
using namespace turn;
int main(){
n=R();
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
c[0][i][j]=getchar();
getchar();
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
c[1][i][j]=getchar();
getchar();
}
turn_90(0,2);
turn_90(2,3);
turn_90(3,4);
turn_mid(0,5);
turn_90(5,6);
turn_90(6,7);
turn_90(7,8);
for(int i=1;i<=8;i++){//和1比对
if(check(d[i],1)){
if(i>=5&&i<=7) putchar(53);
else if(i==8) putchar(54);
else putchar(48+i);
return 0;
}
}
putchar(55);
}
数据: input:
5
-@@@-
-@@--
-@---
-----
-----
-----
----@
---@@
--@@@
-----
output:
5
同一份代码,本地运行结果为5(也就是正确的运行结果),洛谷IDE运行结果为7?