知方号

知方号

约瑟夫环问题详解(图文结合)

约瑟夫环问题详解(图文结合)

目录

约瑟夫小故事:

问题数学化:

 特殊情况: 

1.  q = 2 ,  n =2^k           (k=1 , 2, 3, ...... )

 2.   q = 2 ,  n =2^k ​+ t    (k=1 , 2, 3, ...... )

 一般情况:

思路总结:

算法推导:

代码实现:

总结:

约瑟夫小故事:

约瑟夫是犹太军队的一个将军,在反抗罗马的起义中,他所率领的军队被击溃,只剩下残余的部队40余人,他们都是宁死不屈的人,所以不愿投降做叛徒。一群人表决说要死,所以用一种策略来先后kill所有人。 于是约瑟夫建议:每次由其他两人一起kill一个人,而被kill的人的先后顺序是由抽签决定的,约瑟夫有预谋地抽到了最后一签,在kill了除了他和剩余那个人之外的最后一人,他劝服了另外一个没死的人投降了罗马。

问题数学化:

现在有 n 个人,每个人都有属于自己的标识(下标),分别是 0  ~  n-1。所有人呈圆环状排列,每隔 q 个人就淘汰一个人 ,最后只能有一个人留下来,来求这个人的下标。

 特殊情况:  1.  q = 2 ,  n =           (k=1 , 2, 3, ...... )

此时的存活的人总是第一个人!

例如:

注:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。