#include <stdio.h>
#include <string.h>
char cube[20]={'\0'},a[10]={'\0'},b[10]={'\0'},s[10]={'\0'};
int rat[30][10]={{1,2,3,4,5,6},{1,3,5,2,4,6},{1,4,2,5,3,6},{1,5,4,3,2,6},
{2,1,4,3,6,5},{2,3,1,6,4,5},{2,4,6,1,3,5},{2,6,3,4,1,5},
{3,1,2,5,6,4},{3,2,6,1,5,4},{3,5,1,6,2,4},{3,6,5,2,1,4}};
bool Rotate(char *a,char *b)
{
char t;int p[10]={0};
for(int i=0;i<12;i++)
{
for(int j=0;j<6;j++)
s[j]=a[rat[i][j]-1];
if(!strcmp(s,b)) return true; //判断相同与否要加上!号
for(int j=5;j>=0;j--) //因为前面数组rat只有一半的
s[5-j]=a[rat[i][j]-1];
t=s[2]; s[2]=s[3]; s[3]=t;
if(!strcmp(s,b)) return true;
}
return false;
}
int main()
{
while(scanf("%s",cube)==1)
{
for(int i=0;i<6;i++) a[i]=cube[i];
for(int i=0;i<6;i++) b[i]=cube[i+6];
if(Rotate(a,b)) printf("TRUE\n");
else printf("FALSE\n");
}
return 0;
}
要是凭想象力去找答案,那真是太抽象了,不如制作个盒子去寻找答案,那是很轻松的。我就是制作了一个盒子,会有6个面,然后以每一个面为轴旋转,每个面可产生4个空间视图;这样总共有6*4=24种(其实是23种,因为它本身占一种)。这样,答案就出来啦。