今日一言:谢谢你,成为我前进的理由。——《言叶之庭》 数据结构 —— 约瑟夫环 这是用链表实现的,约瑟夫环的规则是:总数为N的同学围成一个圆环,并将这些同学从1开始编号,游戏开始时,约定好一个数字K,从1号同学开始轮着叫号,当叫到K号时,该同学淘汰,下一位同学从1开始重新 ...
问题描述:n个人 编号 n ,从 开始报数,报到 m 的退出,剩下的人继续从 开始报数。求胜利者的编号。 一般我们采用一个循环队列来模拟约瑟夫环的求解过程,但是如果n比较大的时候,采用模拟的方式求解,需要大量的时间来模拟退出的过程,而且由于需要占用大量的内存空间来模拟队列中的n个人,并不是一个很好的解法。 在大部分情况下,我们仅仅需要知道最后那个人的编号,而不是要来模拟一个这样的过程,在这种情况下 ...
2017-12-31 19:41 0 1288 推荐指数:
今日一言:谢谢你,成为我前进的理由。——《言叶之庭》 数据结构 —— 约瑟夫环 这是用链表实现的,约瑟夫环的规则是:总数为N的同学围成一个圆环,并将这些同学从1开始编号,游戏开始时,约定好一个数字K,从1号同学开始轮着叫号,当叫到K号时,该同学淘汰,下一位同学从1开始重新 ...
n个数据元素构成一个环,从环中任意位置开始计数,计到m将该元素从表中取出,重复上述过程,直至表中只剩下一个元素。 解题思路:用一个无头结点的循环单链表来实现n个元素的存储。循环单链表:尾指针指向头结点。这样指针可以循环移动。 可以使用两个指针来操作,将指针q指向需要操作的结点上,指针p指向需要 ...
链表和数组一样也是线性表的一种。和数组不同,它不需要再内存中开辟连续的空间。 链表通过指针将一组零散的内存块连接在一起。我们把内存块称为链表的“结点”(是节点还是结点,结点连接起来打个结所以叫“结点 ...
本篇文章中所有数据结构都是后期整理的,如有问题欢迎指正,转载请注明出处http://www.cnblogs.com/a1982467767/p/8893553.html 约瑟夫环问题实现 实验程序: ...
1.Josephu(约瑟夫、约瑟夫环)问题: 设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。 提示: 用一个 ...
什么是约瑟夫问题? 约瑟夫问题:n个人围成一圈,初始编号从1~n排列,从约定编号为x的人开始报数,数到第m个人出圈,接着又从1开始报数,报到第m个数的人又退出圈,以此类推,最后圈内只剩下一个人,这个人就是赢家,求出赢家的编号。 是不是有点点复杂,其实该问题归结为模拟类型的算法题 ...
约瑟夫环问题(C语言、数据结构版) 一、问题描述 N个人围城一桌(首位相连),约定从1报数,报到数为k的人出局,然后下一位又从1开始报,以此类推。最后留下的人获胜。(有很多类似问题,如猴子选代王等等,解法都一样) 二、思路分析 (1)可将人的顺序简单编号,从1到N; (2)构造 ...
经典的约瑟夫斯 问题描述: 有n个人围成一圈,从1开始顺序排号。从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号? 数组循环模拟法 双向链表模拟法 数学推理法 无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来 ...