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