Skip to content

Commit b9da027

Browse files
committed
docs: update algorithm-stories.md
更新“红色眼睛与褐色眼睛”谜题
1 parent 7be3216 commit b9da027

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

docs/algorithm-stories.md

+9-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
> 这里仅挑一些有意思的故事或知识点做个记录。
44
5-
- [和尚眼睛的颜色](#和尚眼睛的颜色)
5+
- [“红色眼睛与褐色眼睛”谜题](#“红色眼睛与褐色眼睛”谜题)
66

7-
## 和尚眼睛的颜色
7+
## “红色眼睛与褐色眼睛”谜题
88
从前,有个小岛上只住着和尚。有些和尚的眼睛是红色的,而另一些则是褐色的。红色眼睛的和尚受到诅咒,如果得知自己的眼睛是红色的,那么当晚 12 点必须自行了断,无一例外。
99

1010
和尚间有一条不成文的规定,就是彼此不能提起对方眼睛的颜色。小岛上没有一面镜子,也没有可以反射自己容貌的物体。因此,没有任何人能够得知自己眼睛的颜色。出于这些原因,每个和尚都过着幸福的日子。
@@ -23,4 +23,10 @@
2323

2424
如果**只有一名和尚的眼睛是红色的**,会出现什么结果呢?很简单,这名和尚知道其它和尚眼睛都是褐色的,那么就会判断出自己眼睛的颜色,进而选择自杀。游客的无心之言就这样夺走了一条生命。
2525

26-
考虑更复杂的情况。假如**有两个红眼和尚**,那么他们各自都知道有一个红眼和尚,都以为说的是对方。这两个和尚心想:“那么红眼的家伙今晚就要自杀喽。”当晚,各自都安心入睡了。第二天,这两个和尚相互碰面,并看到对方没有自杀时,心理备受打击。他们都会意识到,红眼和尚有两个而非一个,而另一个正是自己。除此之外的任何情况都不可能让对方在第一个晚上不自杀而安然入睡。因此,受到极大打击的这两个红眼和尚在第二天晚上**都会悲惨死去**
26+
考虑稍微复杂点的情况。假如**有两个红眼和尚**,那么他们各自都知道有一个红眼和尚,都以为说的是对方。这两个和尚心想:“那个红眼的家伙今晚就要自杀喽。”当晚,各自都安心入睡了。第二天,这两个和尚相互碰面,并看到对方没有自杀时,心理备受打击。他们都会意识到,红眼和尚有两个而非一个,而另一个正是自己。除此之外的任何情况都不可能让对方在第一个晚上不自杀而安然入睡。因此,受到极大打击的这两个红眼和尚在第二天晚上**都会悲惨死去**
27+
28+
再考虑更复杂的情况。如果有 3 个红眼和尚,又会是怎样呢?平时,这 3 位会看到两个红眼和尚,所以听到游客的话后,都不会选择自杀。第一晚过后,他们又会想,另外两个和尚在第二天晚上都会自杀(就是前面探讨的“有两个红眼和尚”的情形)。到了第三天早上,看到本以为会自杀的另两个和尚并没有自杀时,根本没想到自己也是红眼和尚的这 3 人会同时受到极大的打击。因为,两个红眼和尚第二天晚上也没有自杀,这表明还有一个红眼和尚,而这第三个红眼和尚正是自己。
29+
30+
这种逻辑会反复循环。因此,该题的答案是“若小岛上共有 n 个红眼和尚,那么第 n 个晚上这些和尚会同时自杀”。离入,小当时共有 5 个红眼和尚,那么第 5 个晚上,这 5 个红眼和尚会同时自杀。
31+
32+
这道题其实可以利用递归的方法。假设红眼和尚人数 N 为 10,那么我们可以适用 N 为 9 的逻辑。同理,N 为 8 或 7 时,都适用 `N-1` 时的逻辑。将 `N=1`,即“只有一个红眼和尚”视为终止条件,即可得出最终结果。这种过程与计算机算法中函数的递归调用过程完全相同或给。

0 commit comments

Comments
 (0)