乐趣区

关于算法:舞会上有多少顶黑帽

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

🔥 Hi,我是小彭。本文已收录到 GitHub · AndroidFamily 中。这里有 Android 进阶成长常识体系,有气味相投的敌人,关注公众号 [彭旭锐] 带你建设外围竞争力。

前言

大家好,我是小彭。

在计算机面试中,逻辑类题目是规模以上互联网公司的必考题。因为题目花样百出,筹备难度较大,题海战术可能不是举荐的做法。在这个系列里,我将精选十道十分经典的逻辑题,心愿能帮忙你找到解题思路 / 技巧。如果能帮上忙,请务必点赞加关注,这真的对我十分重要。


系列文章:

  • 我晓得你不晓得,我到底知不知道
  • 至多要几个砝码,能够称出 1g ~ 40g 分量
  • 舞会上有多少顶黑帽?
  • 25 匹马 5 条赛道,最快须要几轮求出前 3 名?

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 常识体系。技术和职场问题,请关注公众号 [彭旭锐] 私信我发问。

退出移动版