洛谷P1996约瑟夫问题数据结构链表模拟法
246 字
1 分钟
洛谷P1996约瑟夫问题数据结构链表模拟法
——————————-—本文旨在讨论和交流计算机知识,欢迎指正!!!—————————
题目描述
n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。
输入格式
输入两个整数 n,m。
输出格式
输出一行 n 个整数,按顺序输出每个出圈人的编号。 既然这一题要求我们输出出圈人的编号,我们用链表模拟的时候不用模拟值的数组,只用模拟首尾相连的过程即可;
#includeusing namespace std;const int N=1e5+9;int ne[N];int n,m;//初始化首先,我们模拟首尾相连的环状结构
cin>>n>>m;for(int i=1;iusing 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约瑟夫问题数据结构链表模拟法/ 相关文章 智能推荐
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一块空间之后我...
随机文章 随机推荐