没有合适的资源?快使用搜索试试~ 我知道了~
20151910042-刘鹏-C实验19-求解亚瑟夫问题1
需积分: 0 0 下载量 112 浏览量
2022-08-08
22:38:58
上传
评论
收藏 46KB DOCX 举报
温馨提示
标题中的“20151910042-刘鹏-C实验19-求解亚瑟夫问题1”指的是一个关于C语言编程的实验,由学生刘鹏完成,实验内容是解决雅瑟夫问题。描述中提到的要点包括在输入后动态创建所需数组,输出时使用双空格间隔编号,以及对程序进行特定参数的调试。 雅瑟夫问题,又称约瑟夫环问题,是一个著名的理论问题。在这个问题中,n个人围坐在一个圆桌上,从编号为k的人开始按顺时针方向从1开始报数,数到m的人离开,然后下一个人继续报数,直到只剩最后一个人。实验要求通过编程实现这一过程并输出出列顺序。 实验的具体要求如下: 1. 用户需输入n(人数)、m(报数到的数)和k(起始报数人)。 2. 输入n后,程序需要动态分配一个数组来存储状态。 3. 输出结果时,各编号间用两个空格分隔。 4. 使用n = 8,m = 4,k = 1和n = 10,m = 12,k = 4的参数组合进行调试。 解决此问题的方法通常涉及使用环形链表或数组来模拟环状队列。数组a的长度为n+1,其中a[i]表示编号i+1的人。当编号k的人出列后,需要更新数组a,将a[1]更新为k的下一个报数者ak,并将k的值设为ak,保持k始终指向当前报数者,1指向已报数的人,ak是下一个要报数的人。 实验总结部分提到了数组的优缺点,指出其大小固定,管理简便,但在需要灵活结构的编程中可能不足。此外,实验还强调了代码的规范性和遵循编程指南的重要性,如参考了林锐的《高质量C++/C 编程指南》。 参考文献则列举了关于UNIX编程和Linux指南的相关书籍,这可能是学生进行实验时的参考资料。 这个实验旨在帮助学生掌握动态内存分配、数组操作以及使用这些技能解决实际问题的能力。同时,它还强调了编程实践中的规范性和调试技巧。
资源详情
资源评论
资源推荐
1
云南大学数学与统计学实验教学中心
《高级语言程序设计》实验报告
课程名称:程序设计和算法语言
学期:2016~2017 学年上学期
成绩:
指导教师:赵越
学生姓名:刘鹏
学生学号:20151910042
实验名称:数组程序设计
实验编号:No.19
实验日期:2018 年 8 月 16 日
实验学时:2
学院:数学与统计学院
专业:信息与计算科学
年级:2015 级
一、 实验目的
1. 掌握数组的概念和使用方法。练习动态分配与释放数组空间的方法。
2. 体会模型设计在程序设计中的应用。
二、 实验环境
Windows10 Pro Workstation 17134.165;
Cygwin GCC 编译器。
三、 实验内
设有
n
个人围做在圆桌周围,从某个位置开始用自然数进行编号为
1, 2,⋯,n
。然后从编号为
k
的人从
1
开
始报数,数到
m
的人便出列;下一个人(第
m
+
1
个)又从容不迫开始报数,数到
m
的人便是第二个出列的人。
如此继续下去直到最后一个人出列为止。要求输出这个出列的顺序。
这个问题称为雅瑟夫问题。
具体要求如下:
(1)
n
,
m
,
k
由键盘输入,输入前要有提示。
(2)在输入
n
后,动态建立方法说明中所需要建立的数组空间;程序运行结束时释放该存储空间。
(3)在输出时,各编号之间用两个空格来分隔。
(4)分别用
n
=
8
,
m
=
4
,
k
=
1
以及
n
=
10
,
m
=
12
,
k
=
4
调试运行你的程序。
方法提示:
设以自然数
1, 2,⋯,n
为元素构成一个环形队列,并用一个长度为
n
+
1
的一维数组
a
存放各元素,即数组元
素
a
i
表示元素
i
的下一个元素。显然,在开始时,该数组的各元素如下:
a
i
=
i
+
1,
i
=
1, 2,
⋯
, n
―
1
a
i
=
1,
i
=
n
(为直观起见,其中数组元素
a
0
不用),随着报数的进行,不断地有元素从队列中出来,这个数组中的元素
值也在不断地变化,即当有元素出列后,某些元素
i
的下一个元素就不一定是
i
+
1
了。
一般来说,假设当前要出列的元素为
k
,它的前一个元素为
1
,则有
a
1
=
k
,且
k
的下个元素为
a
k
。即当前状
态为
⋯
,
1,
k
,
a
k
,
⋯
,当
k
出列以后,将变为
⋯,
1,
k
,
a
k
,
⋯
,此时
1
的下一个元素已不是
k
,而是原来
k
的下
AshleyK
- 粉丝: 24
- 资源: 315
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- SparkSQL进阶操作相关数据
- java制作的小游戏,作为巩固java知识之用.zip
- Java语言写的围棋小游戏 半成品A Go game written in golang(Semi-finished).zip
- 基于Java-swing的俄罗斯方块游戏:源码+答辩文档+PPT.zip
- florr map详细版
- shiahdifhiahfiqefiwhfi weifwijfiwqufiqweefijeq0jfe
- registry-2.8.3<arm/amd>二进制文件
- Kotlin接口与抽象类详解及其应用
- 51单片机加减乘除计算器系统设计(proteus8.17,keil5),复制粘贴就可以运行
- lv_0_20241114231223.mp4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0