枚举,确定哪一个面朝上之后旋转4次判断两个结果一不一样。
#include <cstdio>
#include <cstring>
#include <iostream>
#define maxn 25
using namespace std;
int dir[6][6] = { {1,2,3,4,5,6},{2,6,3,4,1,5},{3,2,6,1,5,4},{4,2,1,6,5,3},{5,1,3,4,6,2},{6,5,3,4,2,1} };
char buffer[maxn];
char stra[maxn];
char strb[maxn];
char temp[maxn];
bool judge(){
int i,j,k;
for(i=0;i<6;i++){
for(j=0;j<6;j++){
temp[j] = stra[dir[i][j]-1];
}
for(k=0;k<4;k++){
char ch = temp[1];
temp[1] = temp[2];
temp[2] = temp[4];
temp[4] = temp[3];
temp[3] = ch;
if(strcmp(temp,strb)==0) return true;
}
}
return false;
}
int main(){
int i,j;
while(scanf("%s",buffer)!=EOF){
for(i=0;i<6;i++) stra[i] = buffer[i];
for(i=0;i<6;i++) strb[i] = buffer[i+6];
if(judge()) cout<<"TRUE"<<endl;
else cout<<"FALSE"<<endl;
}
return 0;
}