1334:【例2-3】围圈报数-AC

【例3】设有n个人依次围成一圈,从第1个人开始报数,

数到第m个人出列,然后从出列的下一个人开始报数,

数到第m个人又出列,…,如此反复到所有的人全部出列为止。

设n个人的编号分别为1,2,…,n,打印出列的顺序。

【算法分析】

本题我们可以用数组建立标志位等方法求解,

但如果用上数据结构中循环链的思想,

则更贴切题意,解题效率更高。

n人围成一圈,把一人看成一个结点,

n人之间的关系采用链接方式,

即每一结点有一个前继结点和一个后继结点,

每一个结点有一个指针指向下一个结点,

最后一个结点指针指向第一个结点。

这就是单循环链的数据结构。

当m人出列时,将m结点的前继结点指针指向m结点的后继结点指针,即把m结点驱出循环链。

1、建立循环链表。

当用数组实现本题链式结构时,

数组a[i]作为"指针"变量来使用,

a[i]存放下一个结点的位置。

设立指针j指向当前结点,则移动结点过程为j=a[j],

当数到m时,m结点出链,则a[j]=a[a[j]]。

当直接用链来实现时,则比较直观,

每个结点有两个域:一个数值域,一个指针域,

当数到m时,m出链,将m结点的前继结点指针指向其后继结点;

2、设立指针,指向当前结点,设立计数器,计数数到多少人;

3、沿链移动指针,每移动一个结点,计数器值加1,

当计数器值为m时,  则m结点出链,计数器值置为1。

4、重复3,直到n个结点均出链为止。

【参考程序】用数组实现链式结构

#include

#include

using namespace std;

//const int n=10,m=4;

//设有10个人,报到4的人出列

//int a[1001],j=n,k=1,p=0;

int a[1001];

int main( void )

{

int  n,m;

cin>>n>>m;

int j=n,k=1,p=0;

//建立链表

for (int i=1;i

//第n人指向第1人,形成一个环

a[n]=1;

//n个人均出队为止

while (p

{

//报数,计数器加1

while(k

{

j=a[j];

k++;

}

//数到m,此人出队,计数器置1

printf("%d ",a[j]); p++;

a[j]=a[a[j]];

k=1;

}

return 0;

}

【例3】设有n个人依次围成一圈,从第1个人开始报数,

数到第m个人出列,然后从出列的下一个人开始报数,

数到第m个人又出列,…,如此反复到所有的人全部出列为止。

设n个人的编号分别为1,2,…,n,打印出列的顺序。

【算法分析】

本题我们可以用数组建立标志位等方法求解,

但如果用上数据结构中循环链的思想,则更贴切题意,

解题效率更高。n人围成一圈,把一人看成一个结点,

n人之间的关系采用链接方式,

即每一结点有一个前继结点和一个后继结点,

每一个结点有一个指针指向下一个结点,

最后一个结点指针指向第一个结点。

这就是单循环链的数据结构。

当m人出列时,将m结点的前继结点指针指向m结点的后继结点指针,即把m结点驱出循环链。

1、建立循环链表。

当用数组实现本题链式结构时,数组a[i]作为"指针"变量来使用,a[i]存放下一个结点的位置。设立指针j指向当前结点,则移动结点过程为j=a[j],当数到m时,m结点出链,则a[j]=a[a[j]]。

当直接用链来实现时,则比较直观,每个结点有两个域:一个数值域,一个指针域,当数到m时,m出链,将m结点的前继结点指针指向其后继结点;

2、设立指针,指向当前结点,设立计数器,计数数到多少人;

3、沿链移动指针,每移动一个结点,计数器值加1,当计数器值为m时,

则m结点出链,计数器值置为1。

4、重复3,直到n个结点均出链为止。

【参考程序】用数组实现链式结构

#include

#include

using namespace std;

//const int n=10,m=4;

//设有10个人,报到4的人出列

//int a[1001],j=n,k=1,p=0;

int main( void )

{

int  n,m;

int a[1001];

cin>>n>>m;

int j=n,k=1,p=0;

//建立链表

for (int i=1;i

{

a[i]=i+1;

cout<

a["<

}

//第n人指向第1人,形成一个环

a[n]=1;

cout<

//n个人均出队为止

while (p

{

//报数,计数器加1

while(k

{

j=a[j];

k++;

cout<

k="<

}

printf("出队的%d

\n",a[j]);

//数到m,此人出队,计数器置1

p++;

a[j]=a[a[j]];

cout<

"<

k=1;

cout<

}

return 0;

}

1334:【例2-3】围圈报数03

一本通 第三部分 数据结构 第二章 队列 1332 :【例2-1】周末舞会

1748:约瑟夫问题

#include

#include

using namespace std;

queueq;

int n,m;

int now=1;

int main()

{

cin>>n>>m;

for(int i=1;i<=n;i++)

q.push(i);

while(!q.empty())

{

if(now==m)

{

cout<

q.pop();

now=1;

}

else

{

q.push(q.front());

q.pop();

now++;

}

}

return 0;

}

珍藏 | 行书《赤壁赋》,文征明89岁时的书法太潇洒了!

他是“废纸”堆里练就的书法大家,其隶书遵古法而出新,笔力劲健

柳体楷书欣赏:王铎《延寿寺碑》

古诗词中最惊艳的九次初见!

国展是竞技场,别人入选都难,他却连中二元,行、草均入12届国展

动漫古风女生头像忧伤 超美仙气女生头像古风

考研学校有哪些名声好的大学?

大师画的小屁孩,绝了!、

清代宫廷十大顶级画师,真正的“大内高手”!

就业率很低的5个“工科专业”,不要盲目报考,目前就业质量不好

考研学校有哪些名声好的大学?

全国金融学专业大学前十排行榜!中国金融专业大学排名2020

他习欧60多载,73岁再临《九成宫》,满是岁月味,人老书亦老

考研人数年年暴涨,但读博学生寥寥无几,背后原因有3点

考研调剂“水有多深”?这三个隐藏的小细节,你不知道就要吃亏了

只有当你硕士毕业时,你才明白它的重要性,但很多考研人却忽视了

考研结束,80% 的学生将落榜,这些人该何去何从?

外媒:海外中国科学家,纷纷购买回程票

考研明明成绩拔尖,复试被刷后担心有内幕?其实只是这2个原因!

考研后身价倍涨的7个大学专业, 就业容易工资高!

2020年考研成绩出炉之前,做好这两件事,对研究生复试很有帮助!

古风小头像 | 情侣哒,个人哒,喜欢古风的快来

查昇《临怀仁集王圣教序》

关于青春,插画师rabbit

李娜工笔画欣赏,她画出了女子极致之美!

中国画师Lococop插画作品

九大艺术排名第七位是什么

文徵明26岁时,这样写草书!

文徵明儿子的隶书,太漂亮了!

2020考研最吃香的5大热门专业,工资高、好就业

20考研报考数据出炉!考研人数连续暴涨三年!

2020考研竞争到底会有多激烈?看看这个数据!

排列组合的基本公式

排列组合的一些公式及推导(非常详细易懂)

排列组合及基本公式如何计算

a^n –b^n展开公式

(a+b)^n的展开式

a^n+b^n ,a^n-b^n公式

求证:对于任意的正整数n ,关于a,b,c,d的方程n=a^2+b^2+c^2+d^2都有整数解

已知a,b,c,d都是整数,且|a+b|+|b+c|+|c+d|+|d+a|=2,则|a+d|=______

围圈报数c语言编程,59、1334:【例2-3】围圈报数(A)相关推荐

  1. 编写100多行的c语言程序,C语言编程100多例.doc

    C语言编程100多例 As we all know, the education system in China is test-oriented education. However, it cou ...

  2. 围圈报数c语言编程,C语言编程:有n个人围成一圈,顺序排号。从第一个人开始报数......

    题目:有N个人,从1到N编号,按照编号顺序围成一圈.从第一个人开始报数(从1报到3),凡报到3的人退出圈子. 问:最后留下的人的编号是几号. ============================= ...

  3. c++ 求四边形面积和周长_C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少?C语言编程题 题目:任意输入4...

    C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少? C语言编程题 题目:任意输入4 www.zhiqu.org     时间: 2020-12-07 我测试过了,四点一线,凹四边形,四边形 ...

  4. c语言经典算法大全pdf,c语言经典算法100例pdf版.pdf

    c语言经典算法100例pdf版 C 语言经典算法 100 例 C 语言编程经典 100 例 A:[程序1] 题目:有1.2.3.4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程 ...

  5. 信息学奥赛一本通 2037:【例5.4】约瑟夫问题 | 1334:【例2-3】围圈报数 | 洛谷 P1996 约瑟夫问题

    [题目链接] ybt 2037:[例5.4]约瑟夫问题 ybt 1334:[例2-3]围圈报数 洛谷 P1996 约瑟夫问题 [题目考点] 1. 循环遍历数组 假设数组下标为1~n,循环控制变量i从1 ...

  6. c语言有n个人围成一圈用指针,C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子...

    来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2021/05/20 00:22:21 C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 有n个人围成一圈,按 ...

  7. C语言经典例69-有n个人围成一圈报数问题

    目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位. 2 分析 假设全部人 ...

  8. c++ 求四边形面积和周长_C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少?...

    C语言编程题:任意输入4个点,求围成四边形的面积是多少.代码如下: #include "stdio.h" #include "math.h" void main ...

  9. C语言约瑟夫报数出圈算法,c语言实现约瑟夫环问题

    (一)基本问题 1.问题描述 设有编号为1,2,-,n的n(n>0)个人围成一个圈,每个人持有一个密码m.从第一个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m ...

最新文章

  1. 完整的项目工程目录结构
  2. 《模拟信息转换器(AIC)的实现技术研究》读书笔记
  3. 中国联想和浪潮最能算,雄霸全球超算TOP 500数量榜单
  4. 介绍十种数据恢复的软件工具
  5. 掌握这 25 条小贴士,快速提升数据可视化能力!
  6. sprongboot mysql登录注册_后端开发:SpringBoot实现注册与登录功能
  7. Jeecg-Boot前后端分离版
  8. vue设置isactive_Vue 编码风格指南!
  9. 求链表是否有环,及环入口,环长度
  10. java核心技术 下载 网盘_【资源分享】某宝买的40000GB游戏,有你想要的游戏哦,可单独保存或下载...
  11. 电脑故障维修判断指导大全
  12. 安徽大学计算机学院 张磊,张磊 副教授
  13. 用模拟退火算法估价heston期权定价模型的五个参数
  14. Excel 中如何去掉数值中出现的 E +,网上的方法都试过了不管用,改变单元格格式等都无效
  15. 关于Java字符串中拼接换行符
  16. 模拟集成电路设计的九个层次-顶尖高手的心得体会
  17. 根据IP进行城市定位
  18. 两矩阵相乘的秩的性质_MIT—线性代数笔记04 矩阵的LU分解
  19. VyOS软路由系统基本设置
  20. 少年三国志首页效果实现

热门文章

  1. 全国计算机等级考试——三级网络技术复习资料
  2. Element 表单的 rules 验证 Number
  3. java http 中文乱码_关于java发送http请求时中文乱码的一种解决办法
  4. 曾经的足迹——对Linux CAN驱动的理解(1)
  5. 二分归并算法实验报告
  6. 问题 F: 【递归入门】走迷宫
  7. 简单心理首本漫画《猫和狗的生活哲学》开售首日心理学热卖榜第一
  8. 前辈们大公司面试感受
  9. json stm8s103 解析_STM8 C语言精品编程100例 PDF 超清版
  10. win10 uwp 商业游戏 1.1.5