Uva 253 Cube painting

题意:输入两个骰子,判断两者是否等价。每个骰子用6个字母表示。

思路:

这个题 关键是要 抓住 题目 输出的顺序是和样例一样的,即“上下左前右后”。

而且按照图1可知,1-6,2-5,3-4.这3组对应关系。

这样由于输出的每个六面体前3个字母就是对应的三组面每组都出现了其中一个,即上下左。

而翻转就是看3组面是否能一一对应相同。

这样就枚举计数,即可求解。

 

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cstdlib>
 6 #include<cmath>
 7 #include<cctype>
 8 #include<vector>
 9 #include<queue>
10 #include<map>
11 #include<set>
12 #define eps 10e-6
13 
14 using namespace std;
15 
16 typedef long long ll;
17 
18 char s[15],a[7];
19 bool vis[3];
20 int cnt;
21 
22 int main()
23 {
24     while(~scanf("%s",s))
25     {
26         memset(vis,0,sizeof(vis));
27         cnt = 0;
28         strcpy(a,s+6);
29         s[6] = '\0';
30         for(int i=0;i<3;i++)
31         {
32             for(int j=0;j<3;j++)
33             {
34                 if(!vis[j] && ((s[i]==a[j] && s[5-i]==a[5-j]) || (s[i]==a[5-j] && s[5-i]==a[j])))
35                 {
36                     vis[j] = true;
37                     cnt++;
38                     break;
39                 }
40             }
41         }
42         cnt==3?puts("TRUE"):puts("FALSE");
43     }
44     return 0;
45 }

 

posted @ 2015-10-25 11:14  fukan  阅读(441)  评论(0编辑  收藏  举报