题目描述
Description
编写算法解决Josephus问题:设有n个人围在一个圆桌周围,现从第s个人开始报数,数到第m个人又出列…如此反复直到所有的人全部出列为只止。
Josephus问题是:对于任意给定的n,s和m,求出按出列次序得到的n个人员的序列。
输入格式
输入表示n,s,m的三个值,用空格分隔
输出格式
输出出列序列
输入样例
8 3 4
输出样例
6 2 7 4 3 5 1 8
作者 30003021
解法
这道题目没有给定n的范围,毫无疑问要用动态的存储方式,又因为该题明显是一个结点删除和循环的题目,所以这题毫无疑问做法是循环链表。
首先,我们先创建一个循环链表,从第s个数开始每m个数就删除一个数并输出,直至只剩下一个数,再输出这最后一个数,就得到答案。
代码如下:
#include<cstdio>
#include<algorithm>
#