josephus问题

Josephus问题:设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m个人出列,然后从出列的下一个人处重新开始报数,数到第m个人又出列,……如此反复直到所有的人全部出列为止。对于任意给定的n、s和m,求按出列次序得到的n个人员的序列。

基本要求:
(1)熟悉将算法转换为程序代码的过程。
(2)了解顺序表的逻辑结构特性,熟练掌握顺序表存储结构的描述方法。
(3)熟悉掌握顺序表的基本运算:查找、插入、删除等,掌握顺序表的随机存放特性。
(4)熟悉josephus的基本算法思想。

问题分析:
(1) 设计任务:以顺序表作为存储结构,实现josephus算法,实现顺序表上的数据元素的插入、删除和查找运算。
输入输出:输入对应的用户界面要求,输出对应的操作结果。(2)程序功能:内部实现josephus算法的解决,外部提供接口给用户体验。
(3)概要设计:
数据结构:线性表的顺序存储表示
程序流程:先在主程序中初始化顺序表,然后打印用户选择界面,通过用户的选择,调用对应的函数,实现对应的功能。主函数调用其他程序模块,各模板之间相互独立。

代码实现:

#include <iostream>
using namespace std;
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define MaxSize 50
typedef char ElemType;

typedef struct Seqlist
 {
     //线性表顺序存储结构定义
     ElemType
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值