美文网首页
约瑟夫环详解

约瑟夫环详解

作者: 贫僧吃猪蹄 | 来源:发表于2016-07-21 14:51 被阅读0次

第n个出列  ? ---> 0(**)

从上面可以总结规律:

1.  f(*) = (f(**)+m)%n  n指当前未出列元素的个数

2. f(**) 每次都是减少最右边的元素,所以最后一个元素为0

通过以上两个规律就可以进行求解:

最后一个出列的元素为0,即

f(**)(1) = 0; 则 f(*)(1) = (f(**)(1)+3)%1;

因为下一次出列是按照f(**)中的元素进行出列的,所以f(*)(1)序号与f(**)(2)序号相同,即:

f(**)(2)=f(*)(1); 同理可以求出f(*)(2); f(*)(2) = (f(*)(1)+3)%2;

最后得出公式 f(*)(1)=(0+m)%n;  f(*)(n) = (f(*)(n-1)+m)%n; 

扩展 倒数第k个出列的肿么求呢?  

其实挺简单,只要把初始条件换一下,继续套用上面总结出来的公式就ok了。

f(**)(k) = k-1;

f(*)(k)=(f(**)(k)+m)%n;  f(*)(n) = (f(*)(n-1)+m)%n;

相关文章

  • 约瑟夫环详解

    第n个出列 ? ---> 0(**) 从上面可以总结规律: 1. f(*) = (f(**)+m)%n n指当前未...

  • 约瑟夫环详解

    约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。 那么...

  • 约瑟夫环详解

    约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。 那么...

  • 约瑟夫环问题

    约瑟夫环问题约瑟夫环描述:约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围...

  • 循环单链表实现约瑟夫环(C语言)

    约瑟夫环

  • 约瑟夫环

    题目:100名学生围成一个圈, 编号从1到100,从第一名学生开始报数,从1-9报数 每报出9就退出,直到所有学生...

  • 约瑟夫环

  • 约瑟夫环

    问题:1~n个人围成一圈,从1开始报数,每次数到m这个人就出列,问最后剩下的是几号? 做法:递归。 假设剩下的是f...

  • 约瑟夫环

    解法一 用一个list模拟删除过程 解法二 数学公式,推到过程还没看懂

  • 约瑟夫环

    之前去面试的时候遇到这个问题,作为一只算法渣渣,自然带着恐惧的心情,然后自己瞎捣鼓了好长时间终于拼凑出来了一个很菜...

网友评论

      本文标题:约瑟夫环详解

      本文链接:https://www.haomeiwen.com/subject/luybjttx.html