约瑟夫问题(Josephus Problem)3:谁最后一个出列

文章介绍了约瑟夫问题的解决方法,通过递推算法确定在特定规模队伍中,按照一定规则出列后最后剩下的人的编号。作者分享了自己的思考过程,并提供了递推公式和程序实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权所有。所有权利保留。

欢迎转载,转载时请注明出处:

http://blog.csdn.net/xiaofei_it/article/details/16813349

本文是论述约瑟夫问题的第三部分,约瑟夫问题的描述在第一部分。请先阅读第一部分

现在要求输出最后一个出列的人的编号。

第一次见到这个问题是在我高一的时候,那时候搞NOIP,培训的时候碰到了这个题目,当时没想到好的方法,就采用模拟法了。这么多年过去了,前一阵的一个晚上,又想到了这个题目,后来就躺床上想了想,于是就想到了一个比较好的解法。(这也就是我现在写这个系列的文章的原因。)

我在网上搜了一下,发现这个解法和网上的类似。但我还是用自己的语言叙述一下吧。

起初N个人,编号1到N。当数到C(为简单起见,这里假定C<N)的那个人出列后,剩下的人就是

C+1、C+2、…、N、1、2、…、C-1

这时开始数数,编号C+1的人报1,这就成了一个新问题。可以把这个看成一个新队列,即N-1个人,编号为1、2、…、N-1。C+1的新编号为1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值