舞会上有多少顶黑帽?

请点赞关注,你的支持对我意义重大。

🔥 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)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭旭锐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值