欢迎来到天天文库
浏览记录
ID:8502496
大小:13.00 KB
页数:4页
时间:2018-03-30
《c 求约瑟夫环问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、C++求约瑟夫环问题-C++编程求Josephus(约瑟夫环)问题:m个小孩子围成一圈,从第一个小孩子开始顺时针方向数数字,到第n个小孩子离开,这样反反复复,最终只剩下一个小孩子,求第几个小孩子留下?//用C++链表,次链表是单向循环链表,方便操作#include#include#include#includeusingnamespacestd;/////////////////////////////////////////////////////////////////classys//
2、定义类{ ints;public: ys*next; friendys*set(intn); voidget(ys*s); voidputout(ys*t,intm,intn);};/////////////////////////////////////////////////ys*set(intn)//初始化链表{ ys*q=newys,*h=q; inti; for(i=1;is=i; q->next=newys; q=q->next; } q->next=h; q->s=i; returnq;}////////////////////
3、/////////////////////////////////////voidys::get(ys*s)//输出所有的小孩{ inttem=s->s; while(s->next->s!=tem) { cout<next->s<<'t'; s=s->next; }//cout<s<s<4、ndl; ys*h=t->next,*p=t; inti=0; for(;n>1;) { i++; if(i%m!=0) {p=h;h=h->next;} else {p->next=h->next;deleteh;h=p->next;n--;} } cout<s<>n>>m; ysyue; ys5、*head; head=set(n); yue.get(head); yue.putout(head,m,n); return0;}
4、ndl; ys*h=t->next,*p=t; inti=0; for(;n>1;) { i++; if(i%m!=0) {p=h;h=h->next;} else {p->next=h->next;deleteh;h=p->next;n--;} } cout<s<>n>>m; ysyue; ys
5、*head; head=set(n); yue.get(head); yue.putout(head,m,n); return0;}
此文档下载收益归作者所有