百度原始约瑟夫问题为:据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始
面试中可能经常会遇到约瑟夫环问题,逻辑上很简单,就是看怎么实现了,一般而言,最简单最直观的就是利用链表,然后构建一个循环结构,正好是环,最后计算出结果。 遍历环形链表会是一个无限循环,如果链表中的数据逐渐减少,不控制终究会一个不剩,这又不满足我们问题的求解,因此我们需要定义出循环结束的条件,按照约瑟夫环的规则,只剩下一个的时候就结束,在环形链表结构中,那就是结点本身的下一个节点就是它自己。这样就可
转载 2023-08-20 16:56:43
39阅读
简要:     1 丢手绢问题:这是小时候经常玩的游戏,一群小朋友围到一起,形成一个圈。老师唱歌,小朋友们同时丢手绢,歌曲暂停时,目前拿到手绢的小朋友需要表演一个节目。依次循环下去。    2 而约瑟夫问题与之类似,由一群元素构成的环形链表,首先由某个元素开始报数,报到K时的那个元素需要出圈,然后又由下一个元素开始报数
问题来历:约瑟夫问题是个有名的问题:有序号1,2…n个程序员围成一个大圈圈,从编号为K(1<=k<=n)的程序员从1开始报数,数到m的那个程序员出列,可以去挑选对象(真对象,不New不Joke),他的下一位程序员又从1开始报数,数到m的人又出列挑选对象,美滋滋~,依次类推,到最后一个程序员不给对象,只给了一堆bug,并在程序上线的时候祭了天。。。额。。是一个凄美的爱情故事!思路分析:构
鉴于毕设是关于算法的,我又是用Java实现的,所以开始学习Java实现的一些算法。 第一个就是约瑟夫环,因为以前学数据结构的时候用C写过。不知道自己当时太笨还是怎么着,写出来的代码一长串,怎么看怎么麻烦,Java的简单多了。 1.Java循环链表版的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
转载 2023-05-31 20:45:35
30阅读
我们首先来看一下约瑟夫环问题:    给定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
0阅读
import java.util.HashMap; import java.util.Map; /** * 约瑟夫环--Java实现<br> * 有N个同学围成一圈,从1开始依次编号,从第P个开始报数,报到第T个时,该同学出列,<br> * 然后从下一个同学开始报数,仍是报到T个出列,如此重复下去,<br> * 直到所有的同学都出列( 总人数不足T个时
转载 2023-05-24 15:22:53
78阅读
今天介绍约瑟夫出圈问题,关于问题的介绍如下: 为了证明约瑟夫的选择是正确的,我们可以想办法用代码来模拟这个过程。 下面是模拟过程: 1.如何模拟这41个人? 因为我们的目的是为了找到最后存活下来的两个人的位置,所以对于每一个人我们只需要存储其坐的位置编号,然后用链表实现将他们串起来即可,同时。此外,考虑到他们是围着圈报数的,故用循环链表实现。 2.如何实现报数以及自杀的过程呢? 自杀其实就是将此位
约瑟夫环 php实现一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去...,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。目录• 方法一 按逻辑依次去除 • 方法二 递归的<?php /* * filename: kin
public class Josephus { static class Node{ int val; Node next; Node(int v){ val=v; } }//成员类,代表节点,类似于数据结构中的结构体 public static void main(String[] args) { int N=9;//这个表示总人数 int M=5;//数到几的人出列 Node t=new No
约瑟夫 问题描述:设编号为1、2、3... ...n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人先出列,他的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人都出列为止,由此产生一个出队编号的序列,求此序列。 算法思路:先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,保存对应节点的编号,并将节点从链表中
转载 2023-08-05 13:30:53
31阅读
约瑟夫问题:编号为1,2......n的n个人围坐一圈,约定编号为k的人开始从1报数,数到n的人出圈,依此类推,会产生一个出圈地编号序列。这里我们选择用单向循环链表来处理这个问题:首先我们要创建一个单向循环链表:1.先创建第一个节点,让first指针指向它,并让它自己形成环状2.我们在之后每添加一个节点,就加入到环中去遍历单向循环链表:1.先定义一个辅助指针,指向first节点;2.通过while
文章目录前言一、问题描述二、解决思路三、过程图解四、时间复杂度五、代码实现1.测试代码2.代码分析总结 前言约瑟夫问题是数据结构中的经典算法题,这里使用java中的单向环形链表解决该问题。一、问题描述n个人围成一圈,每个人分别标注为1、2、…、n,要求从1号从1开始报数,报到m的人出圈,接着下一个人又从1开始报数,如此循环,直到剩余人数为0,输出出队序列。例如当n=25,m=12时,出队序列为1
约瑟夫环问题问题描述算法1. 非递归法算法理解程序2. 递归法程序3. 循环双链表思路程序 问题描述有N个人,编号为 1~n,围成一个圈,编号1的人手上有一个热狗开始向下一个人传递,在热狗传递 m 次后,此时拿着热狗的人退出,剩余的人围成一个圈,从退出的人的下一位再开始上述循环,知道最后一个留下来的人胜利。如果n为5,m为1,则退出的人编号依次为2,4,1,5,最后胜利的是3。算法1. 非递归法
转载 2023-08-10 21:03:29
39阅读
约瑟夫环问题的两种解法(详解)题目: Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓。于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀。然后下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先
转载 2023-07-05 09:55:22
37阅读
约瑟夫环问题约瑟夫环问题是N个人围成一圈,从第一个人开始报数,报到m的人出圈,剩下的人继续从1开始报数,报到m的人出圈;如此往复,直到最后只剩下1个人。而今天的leetcode面试题62. 圆圈中最后剩下的数字正是约瑟夫环问题,题目如下。思路一:循环链表法在我们学习基础的数据结构时,循环链表可谓是专为约瑟夫环问题而生,其实这是该问题的暴力法版本,我们用一个循环链表存储题目中的N个人,然后开始删除第
Java约瑟夫环前言一、约瑟夫环1、故事2、例题3、题解A、List模拟删除B、动态规划+递归C、动态规划+循环总结参考文献 前言通过学习Java约瑟夫环问题,理解大问题拆解成小问题,然后小问题之间递推求解,这也是动态规划的核心思想。一、约瑟夫环1、故事约瑟夫斯是1世纪的一名犹太历史学家。他在自己的日记中写道,他和他的40个战友被罗马军队包围在洞中。他们讨论是自杀还是被俘,最终决定自杀,并以抽
1.实验目的及要求目的:能够熟练掌握线性表的基本操作在顺序和链式两种存储结构上的实现,进一步理解线性表的逻辑结构和存储结构,提高使用理论知识指导解决实际问题的能力。要求:1.建立数据模型,确定存储结构;2.对任意人数、密码,都能实现约瑟夫环问题;3.出圈顺序可以依次输出,也可以用一个数组输出。2.实验步骤1.实验问题分析(1)由于当某个人退出圆圈后,报数的工作要从下一个人继续,剩下的人仍要围成一个
   约瑟夫问题是信息学奥赛中的一类经典且重要的题型,在平常的测试中屡屡出现。     通常题设可抽象为:一开始有 $n $个人围成一个圈, 从 $1 $开始顺时针报数, 报出 $m $的人被踢出游戏.。然后下一个人再从$ 1 $开始报数,直到只剩下一个人。个人在他身边,然而现在只剩他一个人。$Who$  $are$  $you$$?$  $Who
有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
106阅读
  • 1
  • 2
  • 3
  • 4
  • 5