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 }