Counterfeit Dollar(poj1013暴力枚举)
2013-05-31 21:01
393 查看
题意:有A-L个标号的硬币,其中有一个是假币,你不知道假币的轻重,现在给你三个字符串,up代表右面轻,down右面重,even代表两面相等,找出假币并且判断轻重
思路:因为只有A-L个硬币所以枚举一下,假设A是假币,然后判断一下是否满足那三个条件,满足条件的保存
怎么是满足条件,除了不满足条件的,剩下的都满足条件。
不满足条件的
1.两面相等的字符串出现假币,说明假设不成立。
2.右面轻的字符串出现假币在左面轻或者在右面重,说明假设也不成立。
3.右面重的字符串出现假币在左面中或者在右面轻,说明假设也不成立。
不满足上面条件就是假币。
思路:因为只有A-L个硬币所以枚举一下,假设A是假币,然后判断一下是否满足那三个条件,满足条件的保存
怎么是满足条件,除了不满足条件的,剩下的都满足条件。
不满足条件的
1.两面相等的字符串出现假币,说明假设不成立。
2.右面轻的字符串出现假币在左面轻或者在右面重,说明假设也不成立。
3.右面重的字符串出现假币在左面中或者在右面轻,说明假设也不成立。
不满足上面条件就是假币。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; char L[3][10]; char R[3][10]; char heav[3][10]; struct coin { char c; int flag; }; int main() { int t; scanf("%d",&t); while(t--) { int i,j; for(i = 0; i < 3; i++) { scanf("%s%s%s",L[i],R[i],heav[i]); } coin a;a.c = 'A',a.flag = -1; int f; for(i = 0; i < 12; i++) { int flag_L = 0,flag_R = 0;f = -1; for(j = 0; j < 3; j++) { flag_L = 0,flag_R = 0; int len; int len_L = strlen(L[j]),len_R = strlen(R[j]); for(len = 0; len < len_L; len++) { if((i+'A') == L[j][len]) flag_L = 1; } for(len = 0; len < len_R; len++) { if((i+'A') == R[j][len]) flag_R = 1; } if(strcmp(heav[j],"even") == 0 ) { if(flag_L || flag_R) { break; } } else if(strcmp(heav[j],"up") == 0) {//printf("%c\n",i+'A'); if(flag_R && f == 0) break; if(flag_L && f == 1) break; if(!flag_R && !flag_L) break; if(flag_R) { f = 1; } else if(flag_L) { f = 0; } } else if(strcmp(heav[j],"down") == 0) { if(flag_L && f == 0) break; if(flag_R && f == 1) break; if(!flag_R && !flag_L) break; if(flag_L) { f = 1; } if(flag_R) { f = 0; } } } if(j == 3) { a.c = i+'A'; a.flag = f; } } if(a.flag == 0) printf("%c is the counterfeit coin and it is heavy.\n",a.c); else printf("%c is the counterfeit coin and it is light.\n",a.c); } return 0; }
相关文章推荐
- 条件枚举Counterfeit Dollar(poj1013暴力枚举)
- Poj 1013 Counterfeit Dollar【暴力枚举】
- Counterfeit Dollar(poj1013暴力枚举)
- POJ 3080--Blue Jeans【KMP && 暴力枚举】
- POJ1753 Flip Game(翻转问题且纯枚举暴力翻转)
- poj 3080 暴力法 KMP+暴力枚举
- Smallest Difference (poj 2718 暴力枚举)
- poj 1315 Don't Get Rooked 暴力枚举
- POJ1964/UVALive 3029 -City Game -求最大子矩形-(暴力枚举/dp)
- C语言中的拨钟问题(枚举)(暴力搜索)POJ1166
- poj 3623 Best Cow Line, Gold 暴力枚举
- poj1753(dfs暴力枚举)
- POJ 1458 Common Subsequence (暴力枚举)
- POJ 2785 4 Values whose Sum is 0(暴力枚举的优化策略)
- [poj1054] The Troublesome Frog 暴力枚举+剪支
- poj 1054 The Troublesome Frog 排序后暴力枚举,剪枝优化
- poj 2029 (暴力枚举)水题
- POJ 3279 Fliptile(二进制枚举暴力)
- poj 2029 Get Many Persimmon Trees 暴力枚举
- POJ-1013-Counterfeit Dollar -暴力水题