当前位置:首页 > 数据结构 > 链表 > 正文
SSOJ1197约瑟夫问题链表实现
2033+

题目大意:约瑟夫问题,n个人围成一圈,依次报数,报到m出列,出列后不再报数,输出出列顺序。

题目描述

有n个人围坐在一个圆桌周围,把这n个人一次编号为1,2,…,n。从编号是1 的人开始报数,数到第m个人就出列,然后从出列的下一个人重新开始报数,数到第m个人又出列……..如此反复,直到只所有人都出列为止。给出n和m的值,输出出列顺序。

输入

第一行两个数n和m(n,m<1000)

输出

出列顺序

样例输入

6 5

样例输出

5 4 6 2 3 1 

解题思路

用结构体存储每个人的编号和下一个报数的人是谁;建立一个循环链表,这样报到最后一个会回到第一个。

1、预处理:n个人,分配n个结构体的空间,分别存下编号可以下一个报数编号的地址。

2、报数出列:从“头”开始报数,报m-1次后,到第m个时输出,并让他出列——出列者的前一个的下一个报数的人是出列者的下一个报数的人,下一次有出列者的下一个人开始报数。

程序实现

About

坚决不Copy代码!

本文标签:,,,,

SSOJ1197约瑟夫问题链表实现:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!