枚举 - 称硬币(POJ1013)
题目
有12枚硬币以A~L表示,其中有一枚假币,真假在重量上有区别,但谁众谁轻未知,现有一架天平测量三次的结果,要求输出假币及其轻重。数据保证可以判定出真假币。
输入样例
1
ABCD EFGH even
ABCI EFJK up
ABIJ EFGH even
输出样例
K is the counterfeit coin and it is light.
思路
可以模拟称重的过程,通过假设A~L分别为假币以及假设轻重对每次结果进行核验,若能满足条件则假设成立。
比如,假设某硬币是假币且为轻,那么当右侧天平翘起即up时,假币便在其中。这时只需要把我们遍历到的硬币放入其中寻找,若找得到则假设成立。
这里还是自己画图模拟一下情况比较方便理解。
代码
/* 枚举:称硬币(POJ1013)
2021/1/3 @xycg0529
*/
#include <iostream>
#include <cstring>
using namespace std;
char lleft[3][7]; // 天平左侧砝码
char rright[3][7]; // 天平右侧砝码
char result[3][7]; // 天平右侧情况
bool isFake(