虽然在UVA上AC了,但是我觉得我写 的这个有漏洞。。。
#include<stdio.h>
#include<string.h>char a[20],b[20];
int main()
{
int i,j;
while(scanf("%s",a)!=EOF)
{
b[1]=a[0];
b[2]=a[1];
b[3]=a[2];
b[4]=a[3];
b[5]=a[4];
b[6]=a[5];
a[1]=a[6];
a[2]=a[7];
a[3]=a[8];
a[4]=a[9];
a[5]=a[10];
a[6]=a[11];
if((a[1]==b[1]&&a[6]==b[6])||(a[1]==b[6]&&a[6]==b[1])) //以原来的1、6面为现在的1、6
{ //注意上下面可以颠倒
int kase=0;
if(a[2]==b[2]&&a[3]==b[4]&&a[5]==b[5]&&a[4]==b[3])
kase=1;
if(a[3]==b[2]&&a[5]==b[4]&&a[4]==b[5]&&a[2]==b[3])
kase=1;
if(a[5]==b[2]&&a[4]==b[4]&&a[2]==b[5]&&a[3]==b[3])
kase=1;
if(a[4]==b[2]&&a[2]==b[4]&&a[3]==b[5]&&a[5]==b[3])
kase=1;
if(a[2]==b[2]&&a[4]==b[4]&&a[5]==b[5]&&a[3]==b[3])
kase=1;
if(a[4]==b[2]&&a[5]==b[4]&&a[3]==b[5]&&a[2]==b[3])
kase=1;
if(a[5]==b[2]&&a[3]==b[4]&&a[2]==b[5]&&a[4]==b[3])
kase=1;
if(a[3]==b[2]&&a[2]==b[4]&&a[4]==b[5]&&a[5]==b[3])
kase=1;
if(kase==1)
printf("TRUE\n");
else
printf("FALSE\n");
}
else if((a[2]==b[1]&&a[5]==b[6])||(a[2]==b[6]&&a[5]==b[1])) //以原来的2、5面为现在的1、6
{
int kase=0;
if(a[6]==b[2]&&a[3]==b[4]&&a[1]==b[5]&&a[4]==b[3])
kase=1;
if(a[3]==b[2]&&a[1]==b[4]&&a[4]==b[5]&&a[6]==b[3])
kase=1;
if(a[1]==b[2]&&a[4]==b[4]&&a[6]==b[5]&&a[3]==b[3])
kase=1;
if(a[4]==b[2]&&a[6]==b[4]&&a[3]==b[5]&&a[1]==b[3])
kase=1;
if(a[6]==b[2]&&a[4]==b[4]&&a[1]==b[5]&&a[3]==b[3])
kase=1;
if(a[4]==b[2]&&a[1]==b[4]&&a[3]==b[5]&&a[6]==b[3])
kase=1;
if(a[1]==b[2]&&a[3]==b[4]&&a[6]==b[5]&&a[4]==b[3])
kase=1;
if(a[3]==b[2]&&a[6]==b[4]&&a[4]==b[5]&&a[1]==b[3])
kase=1;
if(kase==1)
printf("TRUE\n");
else
printf("FALSE\n");
}
else if((a[3]==b[1]&&a[4]==b[6])||(a[3]==b[6]&&a[4]==b[1]))//以原来的3、4面为现在的1、6
{
int kase=0;
if(a[1]==b[2]&&a[2]==b[4]&&a[6]==b[5]&&a[5]==b[3])
kase=1;
if(a[2]==b[2]&&a[6]==b[4]&&a[5]==b[5]&&a[1]==b[3])
kase=1;
if(a[6]==b[2]&&a[5]==b[4]&&a[1]==b[5]&&a[2]==b[3])
kase=1;
if(a[5]==b[2]&&a[1]==b[4]&&a[2]==b[5]&&a[6]==b[3])
kase=1;
if(a[5]==b[2]&&a[6]==b[4]&&a[1]==b[5]&&a[2]==b[3])
kase=1;
if(a[6]==b[2]&&a[2]==b[4]&&a[1]==b[5]&&a[5]==b[3])
kase=1;
if(a[2]==b[2]&&a[1]==b[4]&&a[5]==b[5]&&a[6]==b[3])
kase=1;
if(a[1]==b[2]&&a[5]==b[4]&&a[6]==b[5]&&a[2]==b[3])
kase=1;
if(kase==1)
printf("TRUE\n");
else
printf("FALSE\n");
}
else
printf("FALSE\n");
}
return 0;
}
注意题目问两个筛子是不是一样,所以要把筛子的所有放置情况考虑到
例子只是给了一种情况