洛谷P1996约瑟夫问题数据结构链表模拟法

246 字
1 分钟
洛谷P1996约瑟夫问题数据结构链表模拟法

——————————-—本文旨在讨论和交流计算机知识,欢迎指正!!!—————————

题目描述#

n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

输入格式#

输入两个整数 n,m。

输出格式#

输出一行 n 个整数,按顺序输出每个出圈人的编号。 既然这一题要求我们输出出圈人的编号,我们用链表模拟的时候不用模拟值的数组,只用模拟首尾相连的过程即可;

#include
using namespace std;
const int N=1e5+9;
int ne[N];
int n,m;//初始化

首先,我们模拟首尾相连的环状结构

cin>>n>>m;
for(int i=1;i
using namespace std;
const int N=1e5+9;
int ne[N];
int n,m;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
ne[i]=i+1;
}
ne[n]=1;
int pre=n;
for(int cnt=0;cnt<n;cnt++)
{
for(int j=0;j<m-1;j++)
{
pre=ne[pre];
}
cout<<ne[pre]<<" ";
ne[pre]=ne[ne[pre]];
}
return 0;
}

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
洛谷P1996约瑟夫问题数据结构链表模拟法
https://firefly.cuteleaf.cn/posts/knowledge/洛谷p1996约瑟夫问题数据结构链表模拟法/
作者
Firefly
发布于
2026-06-21
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
洛谷P1010递归法题解
算法题解 ————————————本文旨在讨论计算机知识,欢迎指正—————————————— 输入输出样例 输入 1315 输出 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0) 说明/提示 【数据范围】 对于 100% 的数据...
2
洛谷P1115最大字段和的前缀和做法
算法题解 ———————————本文旨在学习交流计算机知识,欢迎指正!———————————— 看到标题,我们可以发现,这也是一个继承性累加问题,很显然的想到滑动窗口和前缀和两个方法: 首先看滑动窗口,那我们的思路就是左边是left,右边是right,而每次向右判断最大的数更新值但记录最大值,可是,如果这样...
3
拓展单向循环链表
数据结构 —————————————本文旨在讨论计算机知识欢迎指正——————————————— 书接上回:我们已经了解了链表如何编写与前置节点和头指针两种表示方式,下面,我们来了解进阶写法———如何实现单向循环链表。 下面,我们来梳理一下循环链表的实现方式: 这是朴素的链表实现形式: 这是我们理想中的循环...
4
数据结构顺序队列及链式队列
数据结构 ————————————本栏目旨在讨论计算机知识,欢迎交流————————————— 上一章,我们讨论了顺序栈和链式栈,这一章,我们将讲解线性结构的最后一个部分——顺序队列和链式队列。相比于栈结构的同端进出,就像原肠生物,而队列则是尾部入队和头部出队,就像后口生物一样。 如图: 那么,如何来实现入...
5
链表的实现与介绍
数据结构 ——————————————本文旨在交流计算机知识,欢迎指正————————————— 首先,我们回顾一下上一期讲的顺序表: 顺序表是一种物理结构上连续的,一整块连续空间的逻辑表,但是,试想一下,如果每次我们都是申请在一块整块空间里面的顺序表,但是我们并不知道堆空间里面我们malloc一块空间之后我...
随机文章 随机推荐
Profile Image of the Author
Firefly
Hello, I'm Firefly.
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
33
分类
7
标签
25
总字数
56,127
运行时长
0
最后活动
0 天前
站点信息
构建平台
Vercel
博客版本
Firefly v6.12.3
文章许可
CC BY-NC-SA 4.0

文章目录