面试智力题汇总——12 大类高频题
解题核心思路:先建模 → 抽象本质 → 找规律 → 推广结论。
本文按 12 大类整理了面试中最高频的智力题,每道题都给出「题目 + 核心思路/答案 + 关键推理」,结论先行,便于快速复习。
1. 二进制问题
二进制问题的本质,是用「bit 状态」去映射和编码大量可能性。把「每个单位」看作一个二进制探针,就能用极少的探针区分出极大的状态空间。
1.1 毒药毒白鼠
题目: 有 1000 个一模一样的瓶子,其中 999 瓶是普通的水,1 瓶是毒药。任何喝下毒药的生命都会在一星期之后死亡。现在只有 10 只小白鼠和 1 个星期的时间,如何检验出哪个瓶子有毒药?
核心思路: 本质是用 10 个二进制位表示 $2^{10} = 1024$ 个编号,覆盖 1000 个瓶子。
关键推理:
- 将 1000 个瓶子编号 1~1000,转换为 10 位二进制。
- 第 $i$ 只老鼠负责喝掉所有第 $i$ 个二进制位为 1 的瓶子。
- 一周后,死亡老鼠对应的二进制位为 1,存活对应 0,由此还原出毒药瓶编号。
本质: 用 10 个 bit 状态映射 1000 种可能性,每只老鼠是一个二进制「探针」。
想一想:为什么 10 只老鼠就够测 1000 瓶?把每只老鼠看作一个二进制位,能表示多少种状态?
每只老鼠只有「死 / 活」两种结果,10 只老鼠就是 10 个 bit,共 $2^{10} = 1024$ 种组合,超过 1000,足够给每瓶药分配唯一编号。关键不是「让老鼠一瓶瓶试」,而是让「死老鼠的集合」与「毒药瓶的二进制位」一一对应——每只老鼠充当一个 bit 探针。
1.2 分金块问题
题目: 工人为老板打工 7 天可获得一块金子,老板每天必须恰好发给工人当天应得的份额,只能切两刀,如何每天发工资?
核心思路: 用二进制思想,将金块切分为能组合出 1~7 任意份额的最小集合。
关键推理:
- 切两刀分成三份:$\dfrac{1}{7}$、$\dfrac{2}{7}$、$\dfrac{4}{7}$。
- 对应二进制 1、2、4,可以通过组合表示 1~7 的任意整数。
| 天数 | 发放方式 |
|---|---|
| 第 1 天 | 给 1/7 |
| 第 2 天 | 给 2/7,收回 1/7 |
| 第 3 天 | 再给 1/7(合计 3/7) |
| 第 4 天 | 给 4/7,收回 1/7 和 2/7 |
| 以此类推 | … |
扩展: 发 15 天工资,分为 $\dfrac{1}{15}$、$\dfrac{2}{15}$、$\dfrac{4}{15}$、$\dfrac{8}{15}$(切三刀)。
1.3 1000 个苹果装 10 个箱子
题目: 将 1000 个苹果装入 10 个箱子,使得任意 1~1000 的数量都可以通过若干箱子组合取出。
核心思路: 二进制按位表示,每个箱子对应一个二进制权重。
装箱方案:
| 箱子 | 苹果数 | 二进制权重 |
|---|---|---|
| 1 | 1 | $2^0$ |
| 2 | 2 | $2^1$ |
| 3 | 4 | $2^2$ |
| 4 | 8 | $2^3$ |
| 5 | 16 | $2^4$ |
| 6 | 32 | $2^5$ |
| 7 | 64 | $2^6$ |
| 8 | 128 | $2^7$ |
| 9 | 256 | $2^8$ |
| 10 | 489(剩余) | 补余 |
验证: 前 9 个箱子总计 $1+2+\cdots+256 = 511$,加上第 10 箱 $489$,总计 $1000$。
2. 先手必胜问题
核心模型: 博弈论中的 Nim 游戏,关键是找到「不变量」或「平衡态」。谁把局面维持/送入平衡态,谁就掌握主动权。
2.1 抢 30 必胜策略
题目: 两人轮流报数,每次可报 1 或 2,最先报到 30 的人获胜。
核心思路: 每轮两人合计最多报 $1+2=3$。
关键推理:
- 先手必胜策略:先报 3 的倍数(3、6、9…27),这样无论对方报 1 还是 2,你都能报到下一个 3 的倍数。
- 最终锁定 27,对方报 1 或 2 你就能拿到 30。
结论: 先手喊 3,之后每次补到 3 的倍数,先手必胜。
想一想:为什么先手要先抢 3 的倍数,之后每次「补到 3」就能必胜?
因为每轮两人合计最多报 3 个数(1 + 2),谁把局面控制在 3 的倍数,谁就能保证无论对方报 1 还是 2,下一轮都能把总数补回 3 的倍数。抢 30 的本质就是「控制不变量(3 的倍数)」——维持平衡态的人赢。
2.2 100 本书必胜取法
题目: 100 本书,每次取 1~5 本,保证最后一次是自己取。
核心思路: 每轮两人合计最多取 $1+5=6$。
关键推理:
- 先手先取 4 本,将剩余变为 96(96 是 6 的倍数)。
- 之后每次确保「自己取 + 对方取 = 6」,锁死节奏。
2.3 轮流拿石子(标准 Nim)
题目一: N 颗石子,每次取 1~M 颗,先取完者胜。
| 条件 | 结果 |
|---|---|
| $N \le M$ | 先手必胜(一次取完) |
| $N \bmod (M+1) = 0$ | 先手必败 |
| $N \bmod (M+1) \ne 0$ | 先手必胜 |
题目二: 多堆石子,每次从任意一堆取任意数量。
模型抽象(Sprague-Grundy 定理):
- 计算所有堆的异或值(XOR)。
- 若异或值为 0 → 平衡态 → 先手必败。
- 若异或值不为 0 → 非平衡态 → 先手必胜。
- 策略:每次取石子,使得操作后所有堆异或值变为 0。
题目三: n 颗带编号石头,每次取 1 颗或编号连续的 2 颗。
策略: 先取最中间的数字(奇数取正中间 1 个,偶数取正中间 2 个),将序列分割为对称两半。之后镜像跟随对方操作,永远是最后取完的人。
3. 推理题
3.1 掰巧克力
题目: $N \times M$ 块巧克力,每次掰一行或一列,掰成 $1 \times 1$ 需要几次?
核心思路: 每掰一次,一块变两块,总块数 +1。从 1 块变为 $N \times M$ 块需要 $N \times M - 1$ 次。
3.2 辩论赛场数
题目: 1000 人参加 1v1 辩论赛,输了退出,需要安排几场?
核心思路: 每场比赛淘汰一人,最终剩 1 人,需淘汰 999 人,故需安排 999 场。
3.3 时针分针秒针重合次数
题目: 24 小时内,时针、分针、秒针重合几次?
关键推理:
- 12 小时内分针追上时针 11 次(分针转 12 圈,时针转 1 圈,超圈 11 次)。
- 24 小时内 22 次。
- 每次分针与时针重合时,秒针恰好有机会追上 → 同样 22 次。
结论: 24 小时内三针重合 22 次。
3.4 蚂蚁走树枝
题目: N 只蚂蚁在长度为 M 的树枝上,蚂蚁相碰各自反向,求时间/总距离。
核心建模技巧: 相碰后反向,等价于两只蚂蚁穿过彼此继续前行,个体不重要,边界位置才重要。
- 最长时间 = 最慢蚂蚁到达端点的最长路径。
- 总距离直接按各蚂蚁独立计算求和。
经典延伸(小鸟飞行问题):
- 两车相向而行,速度 15km/h 和 20km/h,距离 $s$。
- 小鸟 30km/h 来回飞直到两车相遇。
- 两车相遇时间 $t = \dfrac{s}{15+20}$,小鸟飞行距离 $= 30t = \dfrac{30s}{35}$。
3.5 旅馆的 1 元钱
题目: 三人各付 10 元共 30 元,老板退 5 元被小弟贪 2 元,三人各拿 1 元。三人实付 27 元,+ 小弟 2 元 = 29 元,还差 1 元?
解析(逻辑陷阱): 计算思路出错。正确分配应为:
$$\text{老板 25 元} + \text{小弟 2 元} + \text{三人各 1 元} = 30 \text{ 元} \checkmark$$
27 元本身已包含小弟的 2 元(27 = 25 + 2),不应再加,这是重复计算导致的假矛盾。
4. 概率问题
4.1 两孩子问题
题目: 家里有两个孩子,已知其中一个是女孩,另一个也是女孩的概率?
解题(条件概率):
$$P(\text{另一个也是女} \mid \text{至少一个是女}) = \frac{P(\text{女女})}{P(\text{至少一个是女})} = \frac{1/4}{3/4} = \boxed{\dfrac{1}{3}}$$
想一想:为什么已知「至少一个是女孩」时,另一个也是女孩的概率是 1/3 而不是 1/2?
因为「至少一个是女孩」把样本空间从 4 种(男男、男女、女男、女女)缩到 3 种(男女、女男、女女),其中只有「女女」一种满足「另一个也是女孩」。条件概率的分母变了——若题目说的是「老大是女孩」,那才是 1/2。
4.2 绳子剪两刀能构成三角形
题目: 一条绳子随机剪两刀,能构成三角形的概率?
解题(数形结合): 设两个切点坐标 $(x, y)$,在 $[0,1]^2$ 的正方形中,满足三角形三边条件的面积为 $\dfrac{1}{4}$。
$$P = \boxed{\dfrac{1}{4}}$$
4.3 圆上两弦相交概率
题目: 圆上随机画两条弦,相交的概率?
解题: 圆上取 4 个点,确定两条弦的方式有 3 种(连接方式),只有 1 种情况相交。
$$P = \boxed{\dfrac{1}{3}}$$
4.4 100 个奴隶猜帽子颜色
题目: 100 人纵列,每人只能说「黑」或「白」猜自己帽子颜色,最大存活策略?
最优策略(奇偶校验):
- 第 100 个人报前 99 顶帽子中黑帽数量的奇偶性(奇数喊黑,偶数喊白)。
- 后面每个人根据此信息和自己看到的帽子数量,确定自己帽子颜色。
结果: 第 100 人 50% 存活,其余 99 人100% 存活,期望存活 99.5 人。
变体(只能看前一人): 偶数位说出前一人颜色,保证奇数位 100% 存活,偶数位 50%,期望 75 人存活。
4.5 三枪手决斗
题目: 甲(8/10)、乙(6/10)、丙(4/10)三人同时开枪,谁活下来概率最大?
分析:
- 甲乙互为最大威胁,理性情况下都会优先瞄准对方。
- 第一轮甲乙大概率各打对方,丙绝对不会成为第一轮目标。
- 丙是第一轮必然存活的人,且之后面对命中率下降的对手。
结论: 尽管丙命中率最低,考虑到博弈结构,丙存活概率最大。
5. 水桶/计时/赛马问题
5.1 水桶取水问题
| 条件 | 目标 | 方法思路 |
|---|---|---|
| 3L + 5L | 取 4L | 5 倒满 → 倒入 3L 桶 → 5L 剩 2L → 倒空 3L → 2L 倒入 3L → 再倒满 5L → 倒入 3L 桶 |
| 5L + 6L | 取 3L | 反复互倒凑出余数 |
| 10L + 7L + 3L | 各 5L | 不停向小桶中倒,把数字凑出来 |
| 7 两 + 11 两勺 | 取 2 两 | 分析 2 的组合:$11 - 7 \times … = 2$ |
通用方法:扩展欧几里得算法,凑出目标值。
5.2 沙漏计时
6 分钟 + 8 分钟,计 10 分钟:
- 两个沙漏同时开始。
- 6 分钟沙漏结束时翻转(此时 8 分钟沙漏还剩 2 分钟)。
- 8 分钟沙漏结束时,6 分钟沙漏已走 2 分钟,翻转 → 再走 6-2=4 分钟。
- 共 $8 + (6-2)=4 = 10$ 分钟 ✓
4 分钟 + 7 分钟,计 9 分钟:
- 利用 $4 \times 4 - 7 = 9$ 的数学关系。
- 两漏斗同时开始,4 分钟漏完翻转,7 分钟漏完为起计点,4 分钟漏完第 4 次时计时结束。
5.3 烧绳计时
利用同时点两端(速度翻倍):
| 目标时间 | 方法 |
|---|---|
| 30 分钟 | 一根绳两头同时点 |
| 15 分钟 | 两根绳,第一根两头点,第一根烧完(30min)时点第二根两头 |
| 45 分钟 | 第一根单头点,烧完(60min)前先点第二根两头 |
| 75 分钟 | 第一根单头点 60 分钟,第二根再两头点 15 分钟 |
5.4 蜡烛 15 分钟
题目: 两根蜡烛各需 1 小时,如何确定 15 分钟?
策略:
- 点燃第一根的一端,同时点燃第二根的两端。
- 第二根烧完 = 30 分钟。
- 此时点燃第一根另一端。
- 此后第一根烧完 = 再过 15 分钟 ✓
5.5 赛马找最快
25 匹马,5 条跑道,找最快的 3 匹:
解题步骤:
- 分 5 组各跑一次 → 5 场,每组取前三名。
- 5 组第一名同台竞技 → 1 场,确定总第一。
- 分析:总第二只可能在总第一那组的第二 or 第二组的第一;总第三候选更有限。
- 安排剩余候选者决赛 → 1 场。
共 7 场 即可确定前 3 名。
6. 过河/过桥问题
6.1 三人三鬼过河
约束: 任意岸上,人数不能少于鬼数(否则被吃)。船每次运 1~2 人/鬼。
核心思路: 过程中时刻维持「人 ≥ 鬼」约束,利用鬼划船回来策略。
6.2 限时过桥(经典 17 分钟问题)
A、B、C、D 过桥时间:1、2、5、10 分钟,在 17 分钟内全部通过。
| 步骤 | 操作 | 耗时 |
|---|---|---|
| ① | A、B 同行过桥 | 2 min |
| ② | A 返回送手电 | 1 min |
| ③ | C、D 同行过桥 | 10 min |
| ④ | B 返回送手电 | 2 min |
| ⑤ | A、B 同行过桥 | 2 min |
| 合计 | 17 min ✓ |
7. 最优解问题
7.1 小猴子搬香蕉
题目: 100 根香蕉,50 米距离,最多搬 50 根,每走 1 米吃 1 根,最多送到家多少根?
核心思路:
- 100 根无法一次搬完,需要分批。
- 前段:来回搬运,每前进 1 米实际消耗 3 根(去 1 + 回 1 + 带步消耗)。
- 关键节点:当剩余 50 根时,可一次搬完。
- $100 \to 50$:走 $\dfrac{100-50}{3} \approx 16.7$ 米到达 16 米处剩 52 根,再走 1 米变 49 根,不够整数,调整计算。
结论: 最多送到家 ~16 根(精确计算需分段考虑)。
7.2 高楼扔鸡蛋
题目: 2 个鸡蛋,100 层楼,找鸡蛋不碎的临界层,最少尝试次数?
方案一:二分查找 → 最坏需要 50 次。
方案二:线性 + 二分组合(最优)
模型: 假设最坏情况下最多允许 $x$ 次操作,第一个鸡蛋从第 $x$ 层开始,每次降低 1 层:
$$x + (x-1) + (x-2) + \cdots + 1 \ge 100$$
$$\frac{x(x+1)}{2} \ge 100 \Rightarrow x = 14$$
策略: 第一个鸡蛋依次在 14、27、39、50… 层扔,一旦碎了,第二个从上一次安全层线性扫描。
结论: 最坏情况不超过 14 次。
想一想:为什么 2 个鸡蛋不能纯二分,最优是 14 次?14 是怎么算出来的?
二分法第一颗蛋第一次就上 50 楼,碎了只剩一颗蛋,只能从 1 楼一层层扫,最坏 50 次。更优做法是让第一颗蛋的试探间隔「递减」:14、27、39、50……这样无论第一颗在哪一层碎,总次数都不超过 14。这个 14 来自 $x+(x-1)+\cdots+1 \ge 100$,把最坏情况平均摊到每一层。
7.3 空瓶换饮料
题目: 1000 瓶饮料,3 个空瓶换 1 瓶,最多喝几瓶?
解题:
- 每次喝 3 瓶 → 换 1 瓶 → 净减少 2 瓶。
- 直到剩 4 瓶时例外(只能换 1 瓶,不再往复)。
- $(1000 - 4) \div 2 = 498$ 轮,最后 4 瓶还能换 1 瓶。
$$\text{总计} = 1000 + 498 + 1 = \boxed{1499} \text{ 瓶}$$
8. 数字问题
8.1 11-22-33-44 排列
题目: 排列 1,1,2,2,3,3,4,4,使两个 1 之间有 1 个数,两个 2 之间有 2 个数,以此类推。
解法: 先放 4,再放 3,再放 2,最后放 1:
4 1 3 1 2 4 3 2
2 3 4 2 1 3 1 4
8.2 Rand5 生成 Rand7
题目: 已有 rand5()(等概率生成 1~5),构造 rand7()。
方法(拒绝采样):
int rand7() {
int x = Integer.MAX_VALUE;
while (x > 21) {
x = 5 * (rand5() - 1) + rand5(); // 生成 1~25 均匀分布
}
return x % 7 + 1;
}
5*(rand5()-1)+rand5()→ 等概率生成 1~25。- 截断到 1
21(21 是 7 的倍数),取模得到 17。
9. 重量/砝码问题
9.1 8 个乒乓球找重的
题目: 8 个乒乓球,1 个偏重,天平称几次?
解法: 分成 3、3、2 三组:
- 第 1 次:称 3 vs 3
- 平衡 → 重球在剩余 2 个中,再称 1 次 → 共 2 次。
- 不平衡 → 重球在偏重的 3 个中,取其中 2 个再称 1 次 → 共 2 次。
结论: 最少 2 次。
9.2 盐的分割(7g + 2g 砝码)
题目: 7g、2g 砝码各一,天平一个,5 次内将 140g 盐分成 50g 和 90g。
步骤:
- 将 140g 用天平平分 → 70g、70g(1 次)。
- 用 7g 砝码从 70g 中分出 7g×9=63g……
利用天平平分特性 + 砝码组合凑数。
9.3 9 个砝码找最轻(天平无刻度)
分成 3、3、3 三组:
- 称 3 vs 3,平衡则轻砝码在第三组,不平衡取轻侧组(1 次)。
- 在 3 个中取 2 个再称,平衡则第三个是最轻的(1 次)。
结论: 2 次。
9.4 10 组砝码找轻的一组(带刻度秤)
题目: 10 组砝码,每组 10 个,每个 10g,其中一组每个 9g,只称 1 次。
策略:
- 第 $i$ 组取 $i$ 个(第 1 组取 1 个,第 2 组取 2 个…)。
- 理论总重 $= 1+2+\cdots+10 = 55$ 个 $\times 10g = 550g$。
- 实际少了 $y$ 克,则第 $y$ 组是轻的(每个差 1g,取 $y$ 个正好差 $y$ 克)。
结论: 1 次 即可确定。
9.5 药丸问题(20 瓶 / 4 瓶变种)
20 瓶药丸: 第 $i$ 瓶取 $i$ 粒,标准总重 $= \sum_{i=1}^{20} i \times 1 = 210g$,多出重量 $\div 0.1$ = 问题瓶编号。
4 瓶药丸: 第 $i$ 瓶取 $i$ 粒,标准 $= 10g$,多出克数对应编号。
9.6 6 个苹果找坏的
题目: 6 个苹果,1 个坏的(重量不同),称几次?
策略:
- 取 4 个,左右各 2 个称
- 平衡:坏的在剩余 2 个里,拿其中 1 个与好苹果比较 → 2 次总计。
- 不平衡:从左取 1 个换右 1 个
- 仍不平衡:坏的是两个固定位置之一 → 再称 1 次 → 3 次总计。
- 变平衡:坏的是被换出的那个 → 3 次总计。
10. 灯泡开关问题
10.1 三盏灯找开关(经典)
题目: 房外 3 个开关,进房一次,找出对应关系。
策略:
- 开关 A 打开,等 10 分钟后关掉。
- 开关 B 打开。
- 进房:亮的 → B;暗但热的 → A;暗且凉的 → C。
10.2 圆环 100 个灯泡全亮
规则: 按一个灯泡,改变它和相邻两个灯泡的状态。
三步法:
- 步骤一: 从 1 到 98 遍历,遇到暗的按下一个灯泡使其变亮,最终 99、100 可能有暗。
- 步骤二: 处理边界情况,令唯一暗的灯泡编号为 1,将剩余 99 个以 3 个为一组,按每组中间的灯泡 → 全暗。
- 步骤三: 全部按一遍 → 全亮。
N 个灯泡的一般结论:
| N 的形式 | 是否一定有解 |
|---|---|
| $N = 3k+1$ | 一定有解 |
| $N = 3k+2$ | 一定有解 |
| $N = 3k$ | 不一定(需分情况讨论) |
11. 蓝眼睛 / 疯狗 / 耳光问题
这三道题是同构问题,本质是公共知识(Common Knowledge)的归纳推理。
11.1 蓝眼睛问题
题目: 岛上有 $c$ 个蓝眼睛的人,游客宣布「至少有 1 个蓝眼睛的人」,几天后蓝眼睛们离开?
归纳推理(数学归纳法):
- $c=1$:第 1 晚离开(看不到别人蓝眼,推断自己是)。
- $c=2$:第 2 晚离开(等第 1 晚另一个人没走,推断自己也是)。
- $c=n$:第 $n$ 晚所有蓝眼睛同时离开。
结论: $c$ 个蓝眼睛的人恰好在第 $c$ 晚全部离开。
想一想:游客说的「至少有一个蓝眼睛」明明岛上人尽皆知,为什么这句话会触发连锁离开?
关键在于这句话把「人人知道」升级成了「公共知识」——我知道、你知道我知道、你知道我知道你知道……。$c=1$ 的人第一晚就能推断「我看不到蓝眼睛,那只能是我」;$c=2$ 的人等到第一晚没人走,才推出「我看到的那个人也在等,说明我也蓝」。归纳下去就是第 $c$ 晚全部离开。
11.2 疯狗问题
题目: 50 只狗中有若干只病狗,第三天才有枪响,共死了几只?
逻辑推导(同蓝眼睛):
- 前两天无枪声说明每个人都看到至少 2 只病狗。
- 因此实际有 3 只病狗,第三天各自判断出自己的狗是病狗。
11.3 耳光问题
题目: 第三次关灯才有人打耳光,有多少人戴黑帽?
结论: 3 个人戴黑帽(同理,第 $n$ 次才有响声 = $n$ 人戴黑帽)。
12. 其他问题
12.1 海盗分金币
题目: 5 个海盗分 100 枚金币,超半数同意方案通过,1 号最多分多少?
逆向归纳法:
| 剩余海盗 | 方案 | 分析 |
|---|---|---|
| 5 号单独 | 100 | — |
| 4、5 号 | 4→100,5→0 | 4 号不需要 5 号同意 |
| 3、4、5 号 | 3→100,4→0,5→0 | 3 号只需 1 票 |
| 2~5 号 | 2→98,3→0,4→1,5→1 | 收买 4、5 号 |
| 1~5 号 | 1→97,2→0,3→1,4→2,5→0 | 收买 3、4 号 |
1 号最优方案:97、0、1、2、0
变体(过半数即可,不需超半数): 结果变为 1→98,2→0,3→1,4→1,5→0。
想一想:为什么逆向归纳要从「只剩 1 个海盗」的局面往前推,而不是从 1 号开始想?
因为每个海盗投票时会想「如果我否决了这个方案,下一个局面我能拿多少」,而这个「下一个局面」又依赖更后面的局面。只有先确定「只剩 1 人」这个确定性终点(他独吞 100),才能一层层反推 2 人、3 人……直到 5 人。正着推没有锚点,反着推有唯一终点。
12.2 不均匀硬币决策
题目: 正面概率 0.7,背面 0.3,如何实现公平决策?
策略: 抛两次:
- 正反(0.7 × 0.3)→ A 赢。
- 反正(0.3 × 0.7)→ B 赢。
- 两次相同 → 重新抛。
两种结果概率相等,实现完全公平。
12.3 圆上任取三点构成锐角三角形
概率: $\boxed{\dfrac{1}{4}}$
三点 $P_1P_2P_3$ 构成锐角三角形,等价于圆心落在三角形内部,等价于 $P_3$ 落在 $P_1P_2$ 对应弧长相对圆心对称的那段弧内,期望概率 $= \dfrac{1}{4}$。
12.4 变色龙变色问题
题目: 红黄蓝兔子数量分别为 $x, y, z$,何时能全变同色?
结论: 当 $x, y, z$ 中至少两个模 3 同余时,可以全部变为同一种颜色。
即 $(x \bmod 3 = y \bmod 3)$ 或 $(y \bmod 3 = z \bmod 3)$ 或 $(x \bmod 3 = z \bmod 3)$。
12.5 100 只老虎 1 只羊
归纳推理:
- 奇数只老虎 → 会吃羊。
- 偶数只老虎 → 不会吃羊(吃了就变羊,会被其他老虎吃)。
100 只(偶数)→ 羊不会被吃。
12.6 红蓝球放桶概率最大化
题目: 100 红 + 100 蓝,放入两桶,随机取到红球概率最大?
策略:
- 桶 A:放 1 个红球。
- 桶 B:放 99 红 + 100 蓝。
$$P = \frac{1}{2} \times 1 + \frac{1}{2} \times \frac{99}{199} \approx \frac{1}{2} + \frac{1}{4} = \frac{3}{4} \approx 74.9%$$
远高于均分的 50%。
12.7 1000 个苹果分成 5 堆
整数分拆问题(允许空堆 → 隔板法):
$$C_{999}^{4} = \frac{999 \times 998 \times 997 \times 996}{24} \approx 40.8 \text{ 亿种}$$
章末提问
1. 「毒药毒白鼠为什么用二进制?如果每只老鼠有 3 种状态(死/病/活),能测多少瓶?」
结论:因为每只老鼠是独立「探针」,二进制下 10 只老鼠 = $2^{10} = 1024$ 种状态组合,能覆盖 1000 瓶;若每只老鼠有 3 种状态,则 10 只可区分 $3^{10}$ 种情况。本质是「用探针状态数编码可能性」,状态数越大,同样数量探针能编码的可能性越多。
2. 「Nim 游戏里异或值为 0 为什么先手必败?怎么理解平衡态?」
结论:因为异或为 0 的局面对任何操作都会破坏平衡——无论先手取多少,后手都能对称地取回、把异或值重新拉回 0;而终局(全空)异或也是 0。所以「异或为 0」是必败态(留给对手),非 0 是先手可以一步转成 0 的必胜态。
3. 「两孩子问题里『至少一个女孩』和『老大是女孩』,为什么答案不同?」
结论:因为两个条件筛选掉的样本空间不同。「至少一个女孩」剩 3 种(男女/女男/女女),另一个也是女孩的概率 = 1/3;「老大是女孩」剩 2 种(女男/女女),概率 = 1/2。条件信息量越大,分母越小。
4. 「高楼扔鸡蛋如果给你 k 个鸡蛋,怎么推广?」
结论:用动态规划,定义 $dp[i][j]$ = i 个鸡蛋、j 次尝试最多能确定的楼层数,转移方程 $dp[i][j] = dp[i-1][j-1] + dp[i][j-1] + 1$(碎/不碎两种情况)。鸡蛋越多,最优试探间隔越接近二分;鸡蛋越少,越接近线性扫描。
5. 「蓝眼睛问题的关键,是不是游客带来了『新信息』?」
结论:不是。游客说的「至少有 1 个蓝眼睛」人人早已知道,关键是把「人人知道」升级成了「公共知识」(每个人都知道每个人都知道……)。正是这个公共知识让归纳推理有了启动点,才触发第 c 晚连锁离开。