线性表13:约瑟夫问题

让编程改变世界

Change the world by program


约瑟夫问题

据说著名犹太历史学家 Josephus有过以下的故事:

在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。

理论付诸实践

小甲鱼:理论为什么能够付诸实践?

热心鱼油:你TMD在说啥*&(*%@……!

小甲鱼:我的意思是约瑟夫问题跟我们讲的循环链表有啥关系?

某女鱼油:它们都带套!

小甲鱼:真聪明,亲一个^_^

小甲鱼:对的,约瑟夫问题里边41个人是围成一个圆圈,我们的循环链表也是一个圆圈,所以可以模拟并让计算机运行告诉我们结果!

问题:用循环链表模拟约瑟夫问题,把41个人自杀的顺序编号输出。

代码:Josephus.c

提高挑战难度:

编号为1~N的N个人按顺时针方向围坐一圈,每人持有一个密码(正整数,可以自由输入),开始人选一个正整数作为报数上限值M,从第一个人按顺时针方向自1开始顺序报数,报道M时停止报数。报M的人出列,将他的密码作为新的M值,从他顺时针方向上的下一个人开始从1报数,如此下去,直至所有人全部出列为止。

答案在这里!

转自:http://blog.fishc.com/1959.html

线性表13|约瑟夫问题 – 数据结构和算法18相关推荐

  1. java实现线性表的案例_数据结构—线性表(LinearList)的原理以及Java实现案例

    线性表:零个或多个数据元素的有限序列.包括数组.链表.栈空间.队列等结构都属于线性表. 本文将介绍Java线性表中的数组.链表的实现逻辑,并附有数组线性表.单链表.静态链表的Java实现源码. 数据结 ...

  2. C语言数据结构线性表上机实验报告,数据结构实验报告实验一线性表_图文

    数据结构实验报告实验一线性表_图文 更新时间:2017/2/11 1:23:00  浏览量:763  手机版 数据结构实验报告 实验名称: 实验一 线性表 学生姓名: 班 级: 班内序号: 学 号: ...

  3. c语言数据结构线性表LA和LB,数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15,20)求新集合?...

    数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15,20)求新集合? 数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15 ...

  4. python线性表顺序存储实现_数据结构——基于C的线性表的顺序存储结构的基本操作的实现...

    /*** *SeqList.c *Copyright (c) 2015, XZG. All rights reserved. *Purpose: * 线性表顺序存储结构的创建.数据插入.数据获取.获取 ...

  5. c语言线性表写的数据库系统(数据结构)

    数据库系统 用C语言的链表知识做了一个简单的数据库,原理简单,可以直接复制代码使用,请大佬指导 #include"consts.h" #include<sys\stat.h& ...

  6. c语言线性表顺序存储实验小结,数据结构学习笔记-线性表顺序存储(C语言实现)...

    写了一天,终于将线性表的顺序存储实现了,顺便恶补了一下指针内容.顺序存储,适合做查询,链式存储适合做增删. 添加方法主要就是将线性表从后往前遍历,依次往后挪一位,直到空出想要插入的位置,删除方法就是将 ...

  7. 顺序表的直接插入排序-----数据结构与算法笔记

    1.排序 参考书:<数据结构(C语言)>–严蔚敏等编著,清华大学出版社. 2.各种内部排序方法的比较图 所谓的排序,就是将一组无序关键字或者乱序关键字按照从大到小或者从小到大或者某种规律进 ...

  8. python列表是顺序表还是链表_Python数据结构与算法(链表使用详解)

    链表 单向链表 p是头节点,指向第一个值,最后一个是伪节点,因为不指向地址. 表元素域elem用来存放具体的数据 链接域next用来存放下一个节点的位置(python中的标识) 变量p指向链表的头节点 ...

  9. PTA 线性表 7-1 约瑟夫环(Josephus)问题(by Yan) (100分) 按出列次序输出每个人的编号

    7-1 约瑟夫环(Josephus)问题(by Yan) (100分) 编号为1,2,-,n的n个人按顺时针方向围坐在一张圆桌周围,每人持有一个密码(正整数).一开始任选一个正整数m作为报数上限值,从 ...

  10. (二)《数据结构与算法》 青岛大学-王卓 线性表 C++

    <数据结构与算法> 青岛大学-王卓 线性表(链式存储)C++ B站链接:[https://www.bilibili.com/video/BV1nJ411V7bd?p=20] 本人能力有限, ...

最新文章

  1. 通过反射获取成员变量并使用
  2. Android软键盘弹出时,覆盖布局,不是把布局顶上去的解决方法
  3. Ubuntu终端(terminal)及Thunderbird邮件客户端常用的快捷键
  4. 我的邮箱又收到了一封信,这一次,关乎爱情
  5. STL之inner_product
  6. Python tkinter版猜数游戏
  7. npm设置和取消代理的方法
  8. linux 命令find
  9. Cocos2d-X3.0 刨根问底(九)----- 场景切换(TransitionScene)源代码分析
  10. 拓端tecdat|R语言非线性回归beta系数估算股票市场的风险分析亚马逊AMZN股票和构建投资组合
  11. 【面向代码】学习 Deep Learning(四) Stacked Auto-Encoders(SAE)
  12. mongodb默认的用户名密码_Linux如何安装、运行MongoDB教程
  13. Javascript多叉树的递归遍历和非递归遍历
  14. 中国纯碱市场产销现状与投资效益预测报告(2022-2027年)
  15. 笔记本上的小键盘计算机怎样用,笔记本小键盘如何关闭和开启 小键盘不能用了怎么办...
  16. 面试常见的逻辑推理题
  17. Cadence OrCAD Capture 绘制总线的方法
  18. 辛弃疾最有代表性的十首词
  19. Magento 1.4 EAV 属性中的新东西
  20. clear both

热门文章

  1. 【渝粤教育】国家开放大学2018年春季 8635-22T老年人中医体质辨识与养 参考试题
  2. Methods of integrating data to uncover genotype–phenotype interactions 翻译
  3. 主板电源开关接口图解_【转】图解:各种主板接线方法 主板电线接法(电源开关、重启等)...
  4. 读计算机视觉综述做的脑图(11.09更新)
  5. python之小坑:IndentationError: expected an indented block
  6. 软路由防火墙IPcop的安装,配置
  7. 行业陷入“围城”效应,新茶饮品牌凛冬将至
  8. python知网下载_GitHub - ppho99/CNKI-download: 知网(CNKI)文献下载及文献速览爬虫
  9. 【word】公式排版问题
  10. JavaScript笔记 Object对象