THE JOSEPHUS PROBLEM
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了THE JOSEPHUS PROBLEM相关的知识,希望对你有一定的参考价值。
问题描述:
古代刑法中,josephus 被告知与其他人一起围成一个圈,每隔三个人杀掉一个,求在哪个位置可以求生。
我们的问题是将数字围成一个圈,每隔一个数字去掉一个数字,数字从1开始,求最后剩下的数字的位置。
解决方案
当我们的数字是偶数的时候,从1开始,那么我们去掉的数字将是 2 4 6 8 … 当我们开始第二轮去掉数字的时候,将原来位置上面的数字按顺序重新从 1 开始编号,假设新一轮的位置编号为 n ,那么恢复为原来的位置就为 2*n-1。假定 J(2n) 为 2n 个数字围成的圈最后剩下的数字 ,那么由上面的解释可以得知公式: J(2n) = 2*J(n) -1
当数字为奇数的时候同理可得公式 : J(2n+1) = 2*J(n)+1
那么我们综上可知:
J(1) = 1
J(2n) = 2*J(n) -1
J(2n+1) = 2*J(n) +1
解方程咯~~~
以上是关于THE JOSEPHUS PROBLEM的主要内容,如果未能解决你的问题,请参考以下文章
线性表应用--Josephus问题的解法(Python 版)