请点赞关注,你的支持对我意义重大。
🔥 Hi,我是小彭。本文已收录到 GitHub · AndroidFamily 中。这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] 带你建立核心竞争力。
前言
大家好,我是小彭。
在计算机面试中,逻辑类题目是规模以上互联网公司的必考题。由于题目花样百出,准备难度较大,题海战术可能不是推荐的做法。在这个系列里,我将精选十道非常经典的逻辑题,希望能帮助你找到解题思路 / 技巧。如果能帮上忙,请务必点赞加关注,这真的对我非常重要。
系列文章:
1. 题目描述
一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?(假设每个人都足够聪明)
2.解题关键
- 定义问题: 假设问题为 $y=F(n)$,表示当有 $n$ 顶黑帽时,会在第 $y$ 天打脸;
- 每个人都看不到自己的帽子,只能通过观察别人的帽子的表现猜测自己的帽子;
- 终止条件: 当一个人眼前都是白帽时,由于至少有一个黑帽,则说明他自己是黑帽。
3. 题解
- $F(1)$:由于只且仅有 1 顶黑帽,那么黑帽 A 眼前全是白帽,他很清楚自己是黑帽,因此一定会在第 1 天打脸。即 $F(1) = 1$;
- $F(2)$:由于只有 2 顶黑帽,大多数人眼前有 2 顶黑帽,而其中黑帽 A 和 B 最为特殊,他们眼前只有 1 顶黑帽。聪明的 A 知道 B 眼前只有两种情况:全是白帽 or 只有 A 头上的黑帽。聪明的 B 也知道 A 眼前只有两种情况:全是白帽 or 只有 B 头上的黑帽。因为 $F(2)$ 没有人眼前全是白色,所以第 1 天不会有人打脸。那么 A 和 B 观察到对方没有在第 1 天打脸,分别都知道自己是黑帽,因此会在第 2 天打脸。即 $F(2) = 2$;
- $F(3)$:由于只有 2 顶黑帽,大多数人眼前有 3 顶黑帽,特殊的黑帽 A、B 和 C 眼前只有 2 顶。它们分别观察到其他两个人均没有在第 2 天打脸,同理,就确信自己是黑帽。即 $F(3)=3$。
- 一次类推,有 $F(x) = x$,有几顶黑帽,就会在第几天打脸。
我是小彭,带你构建 Android 知识体系。技术和职场问题,请关注公众号 [彭旭锐] 私信我提问。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。