约瑟夫生死环游戏c语言程序,使用C++实现的约瑟夫生死游戏

一、项目简介

约瑟夫生者死者游戏的大意是:30个旅客同乘一条船,因为严重超载,加上风高浪大危险万分;因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免于难。无奈,大家只得统一这种方法,并议定30个人围成一圈,由第一个人开始,依次报数,数到第9人,便将他投入大海中,然后从他的下一个人数起,数到第9人,再将他投入大海,如此循环,直到剩下15个乘客为止。问哪些位置是将被扔下大海的位置。

本游戏的数学建模如下:假如N个旅客排成一个环形,依次顺序编号1,2,…, N。从某个指定的第S号开始。沿环计数,每数到第M个人就让器出列,且从下一个人开始重新计数,继续进行下去。这个过程一直进行到剩下K个旅客为止。

本游戏要求用户输入的内容包括:

旅客的个数,也就是N的值

离开旅客的间隔书,也就是M 的值

所有旅客的序号作为一组数据要求存放在某种数据结构中

本游戏要求输出的内容是包括:

离开旅客的序号

剩余旅客的序号

因为是乘客要构成一个环形,所以很容易的就让人联想到了直接用循环链表来解决这个问题,然后要注意到循环链表的插入删除所需要注意的选项就可以实现系统的大部分功能了。最后注意一些异常情况的拍错,提高程序的健壮性,优化代码的可读性。

约瑟夫生死游戏一共有两个类,因为要使用链表,所以首先要做的是对于链表的节点进行定义,如下代码块就是对链表节点类的定义,其代表了整个乘客的数据:

源码下载地址:https://www.write-bug.com/article/1641.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值