Advertisement

C++实现的逻辑推理题 谜语博士难题1

阅读量:

迷语博士的难题(1)

*题目
在两个荒岛上分别居住着两个不同的民族,即诚实族与说谎族。诚实族的成员总是讲真话,而说谎族的成员则永远说谎。
迷语博士是一位思维敏捷的人,他需要判断所遇到的个体属于哪个民族。
此次,博士遇到了三个人,他们可能分别来自诚实族或说谎族。
为了辨别这三个人各自所属的族群,博士向他们提出了问题,并记录下了他们的回答:
向第一个人提问:"你们属于哪个族群?",对方回答:"我们三人中有两人来自诚实族。" 若A为诚实者,则A+B+C=2;若A为说谎者,则A+B+C≠2。
第二位人士回应:"不要胡言乱语,我们三人中仅有一人是诚实族的。" 若B为诚实者,则A+B+C=1;若B为说谎者,则A+B+C≠1。
第三位人士在听到第二位的回答后表示:"确实如此,我们三人中只有一人是诚实族的。" 若C为诚实者,则A+B+C=1;若C为说谎者,则A+B+C≠1。
请依据上述对话内容推断出这三个人各自的族群归属。

*问题分析与算法设计
设这三人为A、B、C,若某人为说谎者则其值设为0,若其为诚实者则其值设为1。根据题干中三人的陈述可分别建立以下逻辑表达式:
第一个人: a&&(a+b+c==2) || (!a&&(a+b+c!=2))
若A为诚实时,则总和等于2;若A为说谎者时,则总和不等于2。
第二个人: b

全部评论 (0)

还没有任何评论哟~