约瑟夫环问题的讨论 具体的实现代码;其实很简单。

本文介绍了约瑟夫环问题,通过C++代码展示了如何使用循环链表解决此问题,包括初始化、报数出圈及显示结果的方法。代码实现了输入任意人数、起始位置和报数间隔,直到链表只剩一个节点的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

2、编写一个求解Josephus问题的函数。用整数序列, 2, 3, ……, n表示顺序围坐在圆桌周围的人。然后使用n = 9, s = 1, m = 5,以及n = 9, s = 1, m = 0,或者n = 9, s = 1, m = 10作为输入数据,检查你的程序的正确性和健壮性。最后分析所完成算法的时间复杂度。定义JosephusCircle类,其中含完成初始化、报数出圈成员函数、输出显示等方法。(可以选做其中之一)

加强题:

1、采用数组作为求解过程中使用的数据结构。

提高题:

2、采用循环链表作为求解过程中使用的数据结构。运行时允许指定任意n、s、m数值,直至输入 n = 0 退出程序。

程序代码:

#include"stdafx.h"

#include<iostream>

usingnamespacestd;

 

structNode

{

       Node* next;

       intiData;

};

 

// 这个简单的类中应该包括三个数据元素;

// 1.总共的人数n;.从第几个人开始s;.数到几m出列

classJosephouCircle

{

public:

       voidSetValue();

       voidPickOut();

       voidShow(Node*);

private:

       intiTotal;   // 总共的人数;

       intiNum;   // 总共数几个数字;

       intiFirst;

};

 

// 设置初值的大小;

voidJosephouCircle::SetValue()

{

       cout << "请输入参与的人数,从第几个人开始,以及数到多少停止:" << endl;

       cin >> iTotal;

       cin >> iNum;

       cin >> iFirst;

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值