这道题,刚看到有点不知道怎么入手。紧接着数学的思维在头脑里发散,觉得可以判断两个正方体三组对立面是否相同,提交以后是AC。但是去进行Debug的时候发现有一些数据是过不了的,如”rgrgrb rggrrb“。画了下图发现确实这两个正方体好像就是不太一样,无法旋转成一致的,但是三组对立面都是相同的。找了网上的代码,发现基本上测试这组数据的时候都是“TRUE”,但是答案其实是“FALSE”。。。。。疑团有待解答
下面是代码,可以AC,但是好像不全对。
#include<cstdio>
#include<cstring>
#include<iostream>
char s1[3][2],s2[3][2];
int n2[3];
int main()
{
int i,j,flag;
char s[20];
while(scanf("%s",s) != EOF)
{
for(i = 0;i <= 2;i++)
{
s1[i][0] = s[i];
}
for(i = 3;i <= 5;i++)
{
s1[5-i][1] = s[i];
}
for(i = 6;i <= 8;i++)
{
s2[i-6][0] = s[i];
}
for(i = 9;i <= 11;i++)
{
s2[11-i][1] = s[i];
}
memset(n2,0,sizeof(n2));
for(i = 0;i <= 2;i++)
{
flag = 0;
for(j = 0;j <= 2;j++)
{
if(n2[j] == 0)
{
if(s1[i][0] == s2[j][0])
{
if(s1[i][1] == s2[j][1])
{
flag = 1;
n2[j] = 1;
break;
}
}
else if(s1[i][0] == s2[j][1])
{
if(s1[i][1] == s2[j][0])
{
flag = 1;
n2[j] = 1;
break;
}
}
}
}
if(flag == 0)
{
printf("FALSE\n");
break;
}
}
if(i > 2)
{
printf("TRUE\n");
}
}
return 0;
}