您的位置:首页 > 其它

Josephus problem

2010-11-25 23:37 204 查看
据说,因为Josephus的数学天赋,才使得其生存下来。

环状链表,各一个删一个,最后剩下哪一个元素?

在具体数学一书中谈到,如果有n个人,那么J(n)=2l+1;即最后剩下的是最开始是序号为2l+1的成员。

而其中,n=2^m+l;

书中有相关n分别为奇数和偶数时的证明。

那么在计算机中如何实现呢?涉及到2的幂时,可以联想到应用计算机移位操作,左移一位计算机乘以2,而循环左移呢,

假设 n=(bmbm-1...b0)2

l=(0bm-1...b0)2

2l = (bm-1...b00)2

2l+1 = (bm-1...b0bm)2

由于bm=1,因此,在求解这个问题时,只需要将其二进制循环左移一位即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: