您的位置:首页 > 其它

约瑟夫(Josephus)问题

2012-03-07 00:00 246 查看
//约瑟夫(Josephus)问题:有15个人排成一圈,并给他们1~15的编号。现在从1号开始报数,报数字4的人退出
//队列,余下的人从退出者下一个位置开始继续刚才的报数,直到整个队列只剩下一个人为止。请问这个人是几
//号?
//单向循环链表类的实现我会尽快发布
//本题的解决方法见左飞的教材;p169

#include"CirList.h"
#include<iostream>
using namespace std;
void main(){
CirList<int>jos;

for(int i=1;i<16;i++)
{
jos.AddTail(i);

}
jos.SetBegin();
int length=jos.GetCount();
for(int i=1;i<length;i++)
{
for(int j=0;j<3;j++)
jos.GetNext();
jos.RemoveThis();
}
cout<<jos.GetNext()<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息