原文:约瑟夫环问题,一道经典的数据结构题目

问题描述:n个人 编号 n ,从 开始报数,报到 m 的退出,剩下的人继续从 开始报数。求胜利者的编号。 一般我们采用一个循环队列来模拟约瑟夫环的求解过程,但是如果n比较大的时候,采用模拟的方式求解,需要大量的时间来模拟退出的过程,而且由于需要占用大量的内存空间来模拟队列中的n个人,并不是一个很好的解法。 在大部分情况下,我们仅仅需要知道最后那个人的编号,而不是要来模拟一个这样的过程,在这种情况下 ...

2017-12-31 19:41 0 1288 推荐指数:

查看详情

数据结构 —— 约瑟夫

今日一言:谢谢你,成为我前进的理由。——《言叶之庭》 数据结构 —— 约瑟夫 这是用链表实现的,约瑟夫的规则是:总数为N的同学围成一个圆环,并将这些同学从1开始编号,游戏开始时,约定好一个数字K,从1号同学开始轮着叫号,当叫到K号时,该同学淘汰,下一位同学从1开始重新 ...

Mon May 25 06:51:00 CST 2020 0 2497
数据结构约瑟夫问题(循环单链表)

n个数据元素构成一个,从环中任意位置开始计数,计到m将该元素从表中取出,重复上述过程,直至表中只剩下一个元素。 解题思路:用一个无头结点的循环单链表来实现n个元素的存储。循环单链表:尾指针指向头结点。这样指针可以循环移动。 可以使用两个指针来操作,将指针q指向需要操作的结点上,指针p指向需要 ...

Mon Nov 05 05:40:00 CST 2018 0 1834
数据结构---链表及约瑟夫问题带来的思考

链表和数组一样也是线性表的一种。和数组不同,它不需要再内存中开辟连续的空间。 链表通过指针将一组零散的内存块连接在一起。我们把内存块称为链表的“结点”(是节点还是结点,结点连接起来打个结所以叫“结点 ...

Wed Apr 01 07:23:00 CST 2020 0 660
数据结构设计——约瑟夫问题

本篇文章中所有数据结构都是后期整理的,如有问题欢迎指正,转载请注明出处http://www.cnblogs.com/a1982467767/p/8893553.html 约瑟夫问题实现 实验程序: ...

Sat Apr 21 04:32:00 CST 2018 0 1893
Java数据结构之单向环形链表(解决Josephu约瑟夫问题

1.Josephu(约瑟夫约瑟夫问题: 设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。 提示: 用一个 ...

Thu Jul 25 07:28:00 CST 2019 0 1075
数据结构约瑟夫问题(链表法)

什么是约瑟夫问题约瑟夫问题:n个人围成一圈,初始编号从1~n排列,从约定编号为x的人开始报数,数到第m个人出圈,接着又从1开始报数,报到第m个数的人又退出圈,以此类推,最后圈内只剩下一个人,这个人就是赢家,求出赢家的编号。 是不是有点点复杂,其实该问题归结为模拟类型的算法题 ...

Sun Oct 10 06:42:00 CST 2021 0 919
约瑟夫(N个人围桌,C语言,数据结构

约瑟夫问题(C语言、数据结构版) 一、问题描述 N个人围城一桌(首位相连),约定从1报数,报到数为k的人出局,然后下一位又从1开始报,以此类推。最后留下的人获胜。(有很多类似问题,如猴子选代王等等,解法都一样) 二、思路分析   (1)可将人的顺序简单编号,从1到N;   (2)构造 ...

Wed Oct 07 07:21:00 CST 2015 1 47277
约瑟夫问题的几种经典解法

经典约瑟夫问题描述: 有n个人围成一圈,从1开始顺序排号。从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号? 数组循环模拟法 双向链表模拟法 数学推理法 无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来 ...

Sun Sep 01 07:01:00 CST 2019 0 367
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM