C语言实现《猜凶手》问题(最全面的分析)

猜凶手问题
1.问题描述
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
以下为4个嫌疑犯的供词:
A说:不是我。

B说:是C。

C说:是D。

D说:C在胡说

已知3个人说了真话,1个人说的是假话。

现在请根据这些信息,写一个程序来确定到底谁是凶手。
2.解决方案
根据以上问题中的描述,现给出该问题的解决方案:
(1)假设A说的是假话
如果A说的是假话,那么凶手就应该是A。根据嫌犯B、C、D的供词,显然不满足3个人说了真话的已知条件,故假设不成立。
(2)假设B说的是假话
如果B说的是假话,那么凶手就一定不会是C。根据嫌犯A、C、D的供词,可以排除A是凶手的可能性;由于C、D说的都是真话,但C、D的供词又是矛盾的,不满足3个人说了真话的已知条件,故假设不成立。
(3)假设C说的是假话
如果C说的是假话,难么凶手一定不会是D。根据A、B、D供词的正确性可以确定凶手是C。这时候凶手已经确定了。
(4)假设D说的是假话
如果D说的是假话,那么根据C的供词可以确定凶手就是D,但是B的供词又说明凶手是C,这显然不符合实际情况,故假设不成立。
现在最重要的是要如何将解决方案转化成为相应的代码呢?

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值