首页 > 编程语言 > 详细

算法---约瑟夫环

时间:2019-04-14 22:56:20      阅读:245      评论:0      收藏:0      [点我收藏+]

约瑟夫环

1.  报数,删除报到k的人,直到只剩下一个人

题目:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常,我们会要求输出最后一位出列的人的序号。那么这里主要研究的是最后一个出列的人的序号要怎么确定。

首先,数组写成以0开头更便于计算,所以后面的分析都是以0开头的。

分析:

思路:

代码如下:

2.  按递增间隔删数,直到最后只剩下一个数

题目:有数组A,每个元素存放相应的下标,即A[i]=i,要求按照1,2,3,...的规律删除数组中的元素,第一次间隔1个数,第二次间隔2个数,依次类推,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置

技术分享图片

分析:

思路:

代码如下:

 

 

 

 

 

参考文献:

【1】约瑟夫环问题 ( 最简单的数学解法)

【2】经典算法--约瑟夫环问题的三种解法

【3】约瑟夫环问题递归解法的一点理解

【4】约瑟夫环问题

算法---约瑟夫环

原文:https://www.cnblogs.com/nxf-rabbit75/p/10707989.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!