通过以下递归,josephus problem可以是solved:
josephus(n, k) = (josephus(n - 1, k) + k-1) % n + 1
josephus(1, k) = 1
该递归关系如何得出?
最佳答案
维基百科的这一段就足够了。
当索引从1开始时,s的人从
第一人称位置((s-1)\ bmod n)+1,其中n为总数
人数。令f(n,k)表示幸存者的位置。
第k个人被杀死后,我们剩下一个n-1的圆圈,
我们从原始号码中的人开始下一个计数
问题是(k \ bmod n)+1。幸存者在
如果我们从1开始计数,则剩余的圆将为f(n-1,k);
将其转移到考虑我们从(k \ bmod
n)+1产生递归
f(n,k)=((f(n-1,k)+k-1) \bmod n)+1,\text{ with }f(1,k)=1\,,
关于math - Josephus problem中的递归关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12155213/