今天来给大家分享一个学习数据结构时会遇到的经典问题——约瑟夫。据记载,在被敌人围剿困在山洞的约瑟夫和一群和他一样的犹太人因不肯屈服于敌人而设计了一个环节:一群人围成一个(后来因此称为约瑟夫)来进行决定谁先自杀环节,一群人按照一定的顺序进行数数,刚好数到规定数的那个人就先自杀。聪明的约瑟夫和他的一个朋友串通好,并站在规定好的位置因此逃过一劫,其他人都自杀完了。由此这问题就流传到现在,成了著名的
2020-04-10 11:40:30 问题描述: 0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最
转载 2020-04-10 11:42:00
187阅读
2评论
# 约瑟夫问题及其递归解决方案 约瑟夫问题是一个著名的数学和编程问题,它的命名来源于历史上一个犹太民族的传奇故事。这个问题通常被描述为一组人围成一个圈,从第一个人开始报数,报到特定的数字时,该人将被删除,最终剩下的人的位置被视为“胜利”。在文章中,我们将使用 Java 语言及递归方法解决此问题,并附上代码示例和旅行图。 ## 问题描述 假设有 `n` 个人围成一个圈,每报到 `m` 就有
原创 11月前
62阅读
目录目录问题描述:举例分析:代码实现: 方法一:数组方法二:递归代码实现:方法二:递归:参考资料:问题描述:约瑟夫约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3,...n分别表示)围坐在一张圆桌周围,从编号为k的人开始报数,数到m的那个人出圈,他的下一个人又从1开始报数,数到m的那个人又出圈;按照这个规律一直重复下去,最后一个出局的人为游戏的最终胜利者。举例分析:例如
转载 2023-09-04 10:27:58
213阅读
约瑟夫    “约瑟夫”是一个数学的应用问题:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去…,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入max、size, 输出最后那个大王的编号。当只剩最后一只猴子的时候,此时
约瑟夫问题的递推和递归求解说道约瑟夫问题大家一定不会陌生,本科时学数据结构应该都有学过。最容易想到的接替思路就是用链表模拟这个过程(实际上,我用的教材,也是在链表这一章引入的约瑟夫问题)。但是模拟求解的方式比较麻烦,效率也低,而且操作链表,一不小心就会出错。我们可以考虑用数学推导的方式求解,这种方法只要理解推导过程,写出推导表达式就可以求解了。下面详细来说。 给出递推式,并验证其正
需求分析一群小孩编号为1,2,…,n(n>0)围成一圈,有一个刚出锅的山芋在他们之间传递。假设刚开始由1号拿着山芋,然后依次计数把山芋交给下一个小孩,当数到某个特定的k时,拿着山芋的小孩退出游戏,然后从下一个小孩重新开始计数,如此不断,最后剩下的那个孩子就是幸运者。要求设计一个程序模拟次过程,并给出不同的n,k组合下那个幸运者是谁?1、    输入的形式和输入值
递归解法的关键:找到n个人参加游戏的获胜者编号和n-1个人参加游戏的获胜者编号之间的联系,即递归表达式如何得出。我们假设有n个人参加游戏,这n个人的编号分别是:队列(1):1, 2, 3, 4, 5, 6, … , n,共n个。这n个人横着排成一排报数,为了方便理解起见,假设k=1,m=5(即从编号1开始报数,报到5的出列,一排报完了后回到队列开头接着报。)(这样的报数跟围成一圈报数是一模一样的,
# 约瑟夫递归实现 —— 新手开发者指南 ## 引言 在计算机科学中,约瑟夫问题是一个经典的课题。它的核心思想是模拟一组人围成一个,按照一定步骤逐个剔除,直到只剩下最后一个人。通过递归方法实现这个问题能帮助小白开发者更深入理解递归的概念。本文将指导你逐步实现该算法。 ## 约瑟夫实现流程 我们可以将解决约瑟夫问题的过程分为几个关键步骤,如下表: | 步骤 | 描述
原创 9月前
44阅读
题目链接LeetCode 390. 消除游戏[1]题目描述给定一个从 到 排序的整数列表。 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾。 第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数字进行删除,直到列表开头。 我们不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。 返回长度为 的列表中,最后剩下的数字。示例1输入:n = 9, 1
约瑟夫 php实现一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去...,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。目录• 方法一 按逻辑依次去除 • 方法二 递归的<?php /* * filename: kin
我们首先来看一下约瑟夫问题:    给定m个人,m个人围成一圈,在给定一个数n,从m个人中的第一个人每第n个人便将其除去,求被最后一个出去的人的编号。  思路:建立一个长度为m+1的数组,将其的内容初始化为0至m我们设置变量i与j,i代表数组元素的下表,因为我设置的数组长度为m+1,所以数组下标就为每个人的编号,当i==m的时候,我们将i置为0,让其从头开始便利。变量j为判断当前元素是否为排列的
转载 2023-06-01 21:56:35
7阅读
约瑟夫问题的两种解法(详解)题目: Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓。于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀。然后下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先
import java.util.HashMap; import java.util.Map; /** * 约瑟夫--Java实现<br> * 有N个同学围成一圈,从1开始依次编号,从第P个开始报数,报到第T个时,该同学出列,<br> * 然后从下一个同学开始报数,仍是报到T个出列,如此重复下去,<br> * 直到所有的同学都出列( 总人数不足T个时
转载 2023-05-24 15:22:53
94阅读
约瑟夫 问题描述:设编号为1、2、3... ...n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人先出列,他的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人都出列为止,由此产生一个出队编号的序列,求此序列。 算法思路:先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,保存对应节点的编号,并将节点从链表中
转载 2023-08-05 13:30:53
54阅读
百度原始约瑟夫问题为:据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始
转载 2024-08-14 16:46:17
60阅读
**约瑟夫问题**约瑟夫约瑟夫问题,又作杀人游戏问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后 [1] 结果+1即为原问题的解。问题来源:瑟夫(Josephus)问
转载 2023-07-19 07:06:30
206阅读
前几天使用 PHP 实现了约瑟夫问题,使用的是 PHP 数组内部指针的各种操作来实现的,于是想用 JS 来实现一下,实现之前当然要自己来编写一些 JS 数组内部指针的操作函数,就像:reset(), current(), next(), prev(), search(), end() 这些函数,我们都要来自己实现,因为 JS 没有内置这些神奇的操作函数,下面来看代码:Array.prototyp
转载 2023-07-02 22:39:04
71阅读
面试中可能经常会遇到约瑟夫问题,逻辑上很简单,就是看怎么实现了,一般而言,最简单最直观的就是利用链表,然后构建一个循环结构,正好是,最后计算出结果。 遍历环形链表会是一个无限循环,如果链表中的数据逐渐减少,不控制终究会一个不剩,这又不满足我们问题的求解,因此我们需要定义出循环结束的条件,按照约瑟夫的规则,只剩下一个的时候就结束,在环形链表结构中,那就是结点本身的下一个节点就是它自己。这样就可
转载 2023-08-20 16:56:43
48阅读
有n个人围成一个圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是第几号哪位?import java.util.Scanner;public class Test4 { public static void main(String[] args) { Scanner s = new Scanner(System.in); S...
原创 2023-02-27 16:39:10
114阅读
  • 1
  • 2
  • 3
  • 4
  • 5