围圈报数c语言编程,59、1334:【例2-3】围圈报数(A)
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)相关推荐
- 编写100多行的c语言程序,C语言编程100多例.doc
C语言编程100多例 As we all know, the education system in China is test-oriented education. However, it cou ...
- 围圈报数c语言编程,C语言编程:有n个人围成一圈,顺序排号。从第一个人开始报数......
题目:有N个人,从1到N编号,按照编号顺序围成一圈.从第一个人开始报数(从1报到3),凡报到3的人退出圈子. 问:最后留下的人的编号是几号. ============================= ...
- c++ 求四边形面积和周长_C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少?C语言编程题 题目:任意输入4...
C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少? C语言编程题 题目:任意输入4 www.zhiqu.org 时间: 2020-12-07 我测试过了,四点一线,凹四边形,四边形 ...
- c语言经典算法大全pdf,c语言经典算法100例pdf版.pdf
c语言经典算法100例pdf版 C 语言经典算法 100 例 C 语言编程经典 100 例 A:[程序1] 题目:有1.2.3.4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程 ...
- 信息学奥赛一本通 2037:【例5.4】约瑟夫问题 | 1334:【例2-3】围圈报数 | 洛谷 P1996 约瑟夫问题
[题目链接] ybt 2037:[例5.4]约瑟夫问题 ybt 1334:[例2-3]围圈报数 洛谷 P1996 约瑟夫问题 [题目考点] 1. 循环遍历数组 假设数组下标为1~n,循环控制变量i从1 ...
- c语言有n个人围成一圈用指针,C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子...
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2021/05/20 00:22:21 C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 有n个人围成一圈,按 ...
- C语言经典例69-有n个人围成一圈报数问题
目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位. 2 分析 假设全部人 ...
- c++ 求四边形面积和周长_C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少?...
C语言编程题:任意输入4个点,求围成四边形的面积是多少.代码如下: #include "stdio.h" #include "math.h" void main ...
- C语言约瑟夫报数出圈算法,c语言实现约瑟夫环问题
(一)基本问题 1.问题描述 设有编号为1,2,-,n的n(n>0)个人围成一个圈,每个人持有一个密码m.从第一个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m ...
最新文章
- 完整的项目工程目录结构
- 《模拟信息转换器(AIC)的实现技术研究》读书笔记
- 中国联想和浪潮最能算,雄霸全球超算TOP 500数量榜单
- 介绍十种数据恢复的软件工具
- 掌握这 25 条小贴士,快速提升数据可视化能力!
- sprongboot mysql登录注册_后端开发:SpringBoot实现注册与登录功能
- Jeecg-Boot前后端分离版
- vue设置isactive_Vue 编码风格指南!
- 求链表是否有环,及环入口,环长度
- java核心技术 下载 网盘_【资源分享】某宝买的40000GB游戏,有你想要的游戏哦,可单独保存或下载...
- 电脑故障维修判断指导大全
- 安徽大学计算机学院 张磊,张磊 副教授
- 用模拟退火算法估价heston期权定价模型的五个参数
- Excel 中如何去掉数值中出现的 E +,网上的方法都试过了不管用,改变单元格格式等都无效
- 关于Java字符串中拼接换行符
- 模拟集成电路设计的九个层次-顶尖高手的心得体会
- 根据IP进行城市定位
- 两矩阵相乘的秩的性质_MIT—线性代数笔记04 矩阵的LU分解
- VyOS软路由系统基本设置
- 少年三国志首页效果实现