智力题----囚犯猜帽子问题

智力题----囚犯猜帽子问题

最近在刷牛客网的题目,偶然看到这到题,发现提供的答案对于最佳解决方法说的比较模糊,所以就在这里详细的讲一下最佳解决方法到底是怎样实现的,当作自己的一个小笔记。

题目

100个囚犯从前往后坐成一列。坐在最后面的那个囚犯能够看到其余99个囚犯,坐在最前面的 那个囚犯啥也看不见。看守给每个囚犯戴上一顶黑色的或者白色的帽子。然后,看守会从后往前依 次叫这些囚犯猜测自己头顶上的帽子的颜色。如果哪个囚犯猜对了,他就自由了。坐在前面的每一 个囚犯都可以听到后面的囚犯的猜测。如果这100个囚犯事先可以商量好一种策略,那么最理想的策 略是什么?

最佳解决方法

100个囚犯或99个囚犯获得自由,也就是除了坐在最后的那个囚犯靠运气之外,其他的囚犯全部获得自由

思路

举个栗子,帽子分别如下:(为了方便解释,假设只有5个囚犯)

囚犯从前往后排序帽子颜色
1白帽子
2白帽子
3黑帽子
4黑帽子
5黑帽子

现在,定下这样两个规则:
① 最后一名囚犯计算前面所有黑帽子的个数,如果是奇数个,就猜黑,如果是偶数个,就猜白。
② 除了最后一名囚犯,其他囚犯全部优先自己跑路。

现在开始游戏:

第五位囚犯:
计算前面所有黑帽子的个数,如果是奇数个,就猜黑,如果是偶数个,就猜白。

囚犯从前往后排序帽子颜色计算前面黑帽子个数黑帽子帽子奇偶猜帽子是否正确
1白帽子
2白帽子
3黑帽子
4黑帽子
5黑帽子2偶数猜白色实际情况未知

第四位囚犯:
计算前面所有黑帽子的个数,发现是奇数个,但是第五位囚犯给出的是白,根据第一条自定义规则得知第五位囚犯前面有偶数个黑帽子,所以自己是黑帽子,遵守自定义的第二条规则(优先自己跑路),所以猜黑色。

囚犯从前往后排序帽子颜色计算前面黑帽子个数黑帽子帽子奇偶猜帽子是否正确
1白帽子
2白帽子
3黑帽子
4黑帽子1奇数猜黑色正确
5黑帽子2偶数猜白色实际情况未知

第三位囚犯:
计算前面所有黑帽子的个数,发现自己前面是偶数个黑帽子;第五位囚犯最后猜的是白色,根据第一条自定义规则得知第五位囚犯前面有偶数个黑帽子;因为能听到后面所有人的猜测,知道第四位囚犯猜黑色,根据第二条优先跑路规则得知第四位囚犯是黑帽子。
总结:
第五位囚犯前面偶数个黑帽子,
第四位囚犯自己就是黑帽子,偶数减一是奇数,也就是第四位囚犯前面是奇数个黑帽子;
第三位囚犯现在数出自己前面有偶数个黑帽子,所以自己就是黑帽子,根据优先跑路原则猜黑色。

囚犯从前往后排序帽子颜色计算前面黑帽子个数黑帽子帽子奇偶猜帽子是否正确
1白帽子
2白帽子
3黑帽子0偶数猜黑色正确
4黑帽子1奇数猜黑色正确
5黑帽子2偶数猜白色实际情况未知

第二位囚犯:
同理,第五位囚犯前面有偶数个黑帽子。
第三和第四个囚犯都是黑帽子,偶数减去2还是偶数,也就是第二位囚犯前面加上他自己一共应该有偶数个黑帽子。
现在自己数出来的黑帽子个数也是偶数的,说明自己不是黑帽子,所以猜白色。

囚犯从前往后排序帽子颜色计算前面黑帽子个数黑帽子帽子奇偶猜帽子是否正确
1白帽子
2白帽子0偶数猜白色正确
3黑帽子0偶数猜黑色正确
4黑帽子1奇数猜黑色正确
5黑帽子2偶数猜白色实际情况未知

总结

根据上面的思路可以得知,只要定下
① 最后一名囚犯计算前面所有黑帽子的个数,如果是奇数个,就猜黑,如果是偶数个,就猜白。
② 除了最后一名囚犯,其他囚犯全部优先自己跑路。

这样两条规则,就能保证前面99个囚犯都能猜对自己帽子的颜色,而对于最后一位囚犯来说,全靠运气了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值