这道题跟我们小时候学筛子的时候有关,因为是6面三个颜色所以,直接看1-6,2-5,3-4的颜色搭配是否相同,相当于无向图,看看两个图是否相同就可以了。。注意是无向图哦~
View Code
1 #include <stdio.h> 2 #include <string.h> 3 int trans(char c) 4 { 5 switch(c) 6 { 7 case 'r':return 0; 8 case 'b':return 1; 9 case 'g':return 2; 10 default:return -1;break; 11 } 12 return -1; 13 } 14 int main() 15 { 16 char str[20]; 17 int hash1[3][3],hash2[3][3]; 18 int leap = 0; 19 while(~scanf("%s",str)) 20 { 21 memset(hash1,0,sizeof(hash1)); 22 memset(hash2,0,sizeof(hash2)); 23 24 leap = 1; 25 hash1[trans(str[0])][trans(str[5])] = hash1[trans(str[5])][trans(str[0])] = 1; 26 hash1[trans(str[1])][trans(str[4])] = hash1[trans(str[4])][trans(str[1])] = 1; 27 hash1[trans(str[2])][trans(str[3])] = hash1[trans(str[3])][trans(str[2])] = 1; 28 hash2[trans(str[6])][trans(str[11])] = hash2[trans(str[11])][trans(str[6])] = 1; 29 hash2[trans(str[7])][trans(str[10])] = hash2[trans(str[10])][trans(str[7])] = 1; 30 hash2[trans(str[8])][trans(str[9])] = hash2[trans(str[9])][trans(str[8])] = 1; 31 32 if((hash1[trans(str[0])][trans(str[5])] && hash2[trans(str[0])][trans(str[5])]) == 0) 33 leap = 0; 34 if((hash1[trans(str[1])][trans(str[4])] && hash2[trans(str[1])][trans(str[4])]) == 0) 35 leap = 0; 36 if((hash1[trans(str[2])][trans(str[3])] && hash2[trans(str[2])][trans(str[3])]) == 0) 37 leap = 0; 38 39 if((hash2[trans(str[6])][trans(str[11])] && hash1[trans(str[6])][trans(str[11])]) == 0) 40 leap = 0; 41 if((hash2[trans(str[7])][trans(str[10])] && hash1[trans(str[7])][trans(str[10])]) == 0) 42 leap = 0; 43 if((hash2[trans(str[8])][trans(str[9])] && hash1[trans(str[8])][trans(str[9])]) == 0) 44 leap = 0; 45 46 if(leap) 47 puts("TRUE"); 48 else 49 puts("FALSE"); 50 } 51 return 0; 52 }