永发信息网

诚觅高手代写c++约瑟夫环代码,要求用类写!~~

答案:2  悬赏:20  手机版
解决时间 2021-07-30 00:10
要求用类,高手给个代码,在dev上编译通过就行!!
最佳答案
#include <iostream>
using namespace std;

class JosephusRing {
struct person {
int id;
person* next;
} *head, *prev, *next;
int n, m;
public:
JosephusRing( int nn, int mm ) {
n = nn; m = mm;
head = new person;
head->id = 1;
head->next = 0;
person *n = head;
for ( int i = 2; i <= nn; ++i ) {
n->next = new person;
n = n->next;
n->id = i;
n->next = 0;
}
n->next = head;
prev = n;
next = head;
}
void gameStart()
{
int i = 0;
person* tmp;
while( prev != next ) {
++i;
if ( i % m == 0 ) {
tmp = next;
prev->next = next->next;
next = next->next;
cout << "编号为" << tmp->id << "的人被T出" << endl;
delete tmp;
i = 0;
} else {
prev = prev->next;
next = next->next;
}
}
cout << "最后的幸存者是" << next->id << endl;
delete next;
}
};

int main()
{
JosephusRing r( 10, 2 );
r.gameStart();
}

全部回答

#include<iostream>

using namespace std;

class ysf

{

private:

int n,c=0,pos=2,*base;//从N开始数,则把pos改为N-1就行了.

public:

ysf()

{

cout<<"请输入总人数"<<endl; cin>>n;

int *base=new int[n];

for(int i=0;i<n;i++) base[i]=1;

}

~ysf()

{

delete[]base;

}

//本程序以从1开始数,数到3离队为例,其它情况只用少加修改 void make( ) { int j=0; cout<<"NO. "<<++c<<" 第"<<pos+1<<"位出列"<<endl;//输出 base[pos]=0;//踢掉 if(c==n)return; //出口 while(j-3) if(base[pos=(pos+1)%n]) j++;//递归点 ,每次数到几这个3就改到几 make( );//递归 }

};

int main()

{

ysf a;

a.make();

return 0;

}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
铜梁有直达黔江的汽车吗?
dnf魔法师一下召出3个雷沃斯的是啥技能,在哪
其他措施费包括哪些,措施费都包括哪些内容?
QQ旋舞做字(芸)
《中国版图》这首歌的歌词
沙市区百富快捷酒店(荆州苏宁店)怎么去啊,谁
高二物理
孩子最近吃饭会吐出来
我这个问道武器是怎么回事啊
我的DNF怎么更新不了?
全球气候变暖,为什么冬天还是越来越冷呢?
天主教朝圣是什么意思,天主教厄马奴尔是什么
神经病和变态有什么不同?
狗和狼哪个跑的快?
求个大话西游3自由人序列号,老朋友序列号
推荐资讯
QQ魔域怎么登陆不了游戏
现代最有名的作家是谁呐?
成语带扪的成语有哪些,芳有哪些成语
一只小狗过了独木桥就不汪汪了?
怀孕3个多月如果不要宝宝,用什么方法好
吴江牌911防水涂料是那个公司生产的,公司名
谁给我ava激活号
步步惊心诗句相见不如,步步惊心中的诗词
qq丝路英雄在退出保护期之前要造兵吗
什么是fixed asset costs,direct costs和indi
送女朋友杯子代表什么?
如何禁止别人访问我的家园?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?