约瑟夫环公式法解释

本小妞迷上赌 提交于 2019-12-29 18:57:11

公式法:
F(N,M) = (F(N-1,M) + M) % N
F(1,M) = 0 (索引从0开始)
F是每一轮中存活的人对应的编号。
递推过程如下:

  1. 已知F(1,M) = 0,即只有一个人的队伍中,存活的肯定是编号0
  2. 从最后一轮F(1,M)求解倒数第二轮F(2,M):
    倒数第二轮有两个人,杀掉一个人后剩余一人;
    那对应的报号顺序为: 0 1 2 0,(最后一个0对应的存活的人,也就是最后一轮的编号)
    实际报号顺序对应的编号是:0 1/ 0 1 (上下对应,最后剩的人对应编号为1.)
    故倒数第二轮(0,1),剩余的是编号为1
  3. 倒数第三轮同理
    报号顺序: 0 1 2 0 1(最后的0,1表示这轮之后存活的人,也就是倒数第二轮中人的编号)
    实际编号: 0 1 2/ 0 1(这一轮实际有三个人,对应实际编号,最后剩余的人也是编号1)
    故倒数第三轮(0,1,2),剩余的是编号为1
  4. 倒数第四轮
    报号顺序: 0 1 2 0 1 2(最后的0,1,2表示这轮之后存活的人,也就是倒数第三轮轮中人的编号)
    实际编号: 0 1 2 3/ 0 1(这一轮实际有4个人,对应实际编号,最后剩余的人也是编号1)
    故倒数第三轮(0,1,2,3),剩余的是编号为0
  5. 倒数第五轮
    报号顺序:0 1 2 0 1 2
    实际顺序:0 1 2 3 4/ 0
    故下一轮中这一轮中对应的是编号3

归纳可以得到结论,如果我们知道N-1个人中,最终剩余的人的编号,那么,就可以得到N个人最终剩余的编号
因为从N个人到N-1个人,一定经过了1次,0到M-1的报号,如图所示
N中的报号顺序
红色的N-1个编号就是就是下一轮N-1个人的实际编号顺序,也可以与N中的编号相对应了。
所以N-1中幸存者编号对应N中幸存者编号就是:
F(N,M) = (F(N-1,M)+M)%N

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!