约瑟夫环
2016-01-11
传说 41 个犹太人被罗马人围堵在一个山洞里,他们拒绝被俘虏,决定集体自杀,大家商量了一个自杀方案,41 个人围成一个圈,由第 1 个人开始顺时针报数,每报数为 3 的人立刻自杀,然后再由下一个人重新从 1 开始报数,依旧是每报数为 3 的人立刻自杀,依次循环下去,直到最终只剩下一个人。其中数学家约瑟夫和他的朋友不想死,他们发现了自杀方案的规律,他将朋友与自己安排在第 16 个与第 31 个位置,于是逃过了这场死亡游戏。
- 模拟游戏法
1 | function josephus(n, step) { |
- 规模扩散
从小规模问题出发,逐步递推到大规模问题。这种解法的核心思想是利用之前计算的结果来构建更大规模问题的解。
1 | function josephus(n, k) { |
- 数学递归关系法
1 | function josephusMath(n, k) { |