https://vjudge.net/problem/UVA-253
题意:输入两个骰子的六面颜色,判断是否等价。
思路:我最想到的是暴力,不过一直错,也不知道哪里错了。第二种方法就是在一个骰子里出现的一对颜色在第二个骰子也有,只要三对颜色都匹配成功,那么就是等价的。
1 #include<iostream> 2 #include<string> 3 #include<cstring> 4 using namespace std; 5 6 char str[20]; 7 int vis[20]; 8 int ok; 9 10 int main() 11 { 12 //freopen("D:\txt.txt", "r", stdin); 13 while (gets(str)!=NULL) 14 { 15 ok = 1; 16 memset(vis, 0, sizeof(vis)); 17 for (int i = 0; i < 3;i++) 18 for (int j = 6; j < 12; j++) 19 { 20 if (!vis[j] && str[i] == str[j] && str[5 - i] == str[17 - j]) 21 { 22 vis[j] = vis[17 - j] = 1; 23 break; //这个break必须得加 24 } 25 } 26 for (int i = 6; i < 12; i++) 27 { 28 if (!vis[i]) 29 { 30 ok = 0; 31 cout << "FALSE" << endl; 32 break; 33 } 34 } 35 if (ok) cout << "TRUE" << endl; 36 } 37 return 0; 38 }
再附上我的暴力,不过是wrong的。先留着吧,以后说不定我就能发现哪里错了。
1 #include<iostream> 2 #include<string> 3 #include<cstring> 4 using namespace std; 5 6 char str[20], s1[7], s2[7], s3[7], s4[7]; 7 int vis[20]; 8 int ok; 9 10 void solve(int cur) 11 { 12 if (cur == 3) 13 { 14 s3[6] = '