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

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

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

题目

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个囚犯都能猜对自己帽子的颜色,而对于最后一位囚犯来说,全靠运气了。

猜你喜欢

转载自blog.csdn.net/hqpshidashen/article/details/88912045