一道习题半天没想出
时间:2008-06-12 15:10:13
来源:论坛整理 作者: 编辑:chinaitzhe
网友回复:google “约瑟夫环"
网友回复:
[code=c/c ]
#include <iostream>
#include <list>
using namespace std;
int main()
{
cout < <"请输入小孩总数!!" < <endl;
int m;//接收小孩总数
cin>>m;
cout < <"请输入间隔数!!" < <endl;
int n;//接收数数间隔
cin>>n;
list <int> li;
//li.resize(m);//更改list大小等于小孩总数
list <int>::iterator it;//定义迭代器
int i;
//初始化list的内容为小孩编号(从1到m)
for(i=1;i <=m;i )
{
li.push_back(i);
}
it=li.begin();//初始化迭代器到list第一个元素
//list <int>::iterator tempIt;
for(int j=0;j <m-1;j )//共数数m-1轮,淘汰m-1个小孩
{
int k;
for(k=1;k <n;k ,it )//开始数数
{
if(it==li.end())//模拟环形链表
{
it=li.begin();
}
}
if(it==li.end())//模拟环形链表
{
it=li.begin();
}
//cout < < *it < < endl;
//tempIt = it ;//标识将要淘汰的小孩
it = li.erase(it);//将要淘汰小孩对应的节点清除
}
if(it==li.end())//模拟环形链表
{
it=li.begin();
}
cout < <"胜出的小孩为:" < < *it < < "号小孩!!" < <endl;
return 0;
}
[/code]
这个给你吧,用list实现的
关键字:一道,习题,半天,想出,
上一篇:请教
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面