文章目录任务背景求解法一法二 任务编写一个使用列表求解约瑟夫的问题背景据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中。 39个犹太人决定宁愿死也不要被敌人抓。于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀。然后下一个重新报数,直到所有人都自杀身亡为止。然而Josep
转载 2024-01-03 13:12:01
101阅读
问题来历:据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2
话题引入(参考自百度百科–约瑟夫问题)约瑟夫问题,是一个计算机科学和数学中的问题,在计算机编程的算法中,类似问题又称为约瑟夫,又称“丢手绢问题”。问题来历据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数
# 约瑟夫简介及Python实现 ## 1. 什么是约瑟夫约瑟夫(Josephus problem)是一个著名的数学和计算机科学问题。问题源于一个古老的故事,其中约瑟夫和他的战友被敌人包围。他们决定围成一个圈,依次杀掉每个第k个人,直到最后只剩下一个人。问题是,假设我们知道有n个人(编号为1到n),以及每次杀掉的第k个人,我们该如何计算最后幸存者的编号? ## 2. 问题分析 #
原创 2024-09-27 07:10:31
78阅读
约瑟夫问题有时也称为约瑟夫斯置换,是一个计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫。又称“丢手绢问题”。问题来历据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必
#创建结点类,类中有数据、指针两个对象,数据域通过输入获得,指针域默认为空 class LinkNode: def __init__(self, data, next=None): self.data = data self.next = next #创建链表类,创建默认头指针为空 class LinkList: def __init__(self
转载 2024-01-14 10:07:53
93阅读
现在有13个人围成一个,从1开始报数,数到3的人离开,写出程序计算最后剩下的是谁。 使用while循环 def josephus1(num, k, m): """ 约瑟夫约瑟夫问题)是一个数学的应用问题: 已知num个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。 从编号为k的人开始报数,数到m的那个人出列; 他的下一个人又从1开始报数,数到m的那个人又出列; 依此规律重复下去,
故事:约瑟夫问题(Josephus Problem)据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋
约瑟夫问题又称为约瑟夫约瑟夫问题有很多变种。本文就以几个经典的约瑟夫问题介绍其几种解法。问题1:鲁智深吃馒头。据说,鲁智深一天中午匆匆来到开封府大相国寺,想蹭顿饭吃,当时大相国寺有99个和尚,只做了99个馒头。智清长老不愿得罪鲁智深,便把他安排在一个特定位置,之后对所有人说:从我开始报数(围成一圈),第5个人可以吃到馒头(并退下);退下的人的下一位开始从1报数,第5个人可以吃到馒头(并退下)…
约瑟夫问题-以python为舟 文章目录约瑟夫问题-以python为舟前言一、约瑟夫的实现原理二、具体的实现方法1.分割列表-用于解决重新报数问题2.完整代码运行结果总结 前言约瑟夫的大致意思就是:N个人围成一圈,第一个人从1开始报数,报M的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的胜利者。因此我编写了一个算法来解决约瑟夫的问题。一、约瑟夫的实现原理约瑟夫问题
约瑟夫    “约瑟夫”是一个数学的应用问题:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去…,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入max、size, 输出最后那个大王的编号。当只剩最后一只猴子的时候,此时
递归解法的关键:找到n个人参加游戏的获胜者编号和n-1个人参加游戏的获胜者编号之间的联系,即递归表达式如何得出。我们假设有n个人参加游戏,这n个人的编号分别是:队列(1):1, 2, 3, 4, 5, 6, … , n,共n个。这n个人横着排成一排报数,为了方便理解起见,假设k=1,m=5(即从编号1开始报数,报到5的出列,一排报完了后回到队列开头接着报。)(这样的报数跟围成一圈报数是一模一样的,
基本问题描述: 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。(也类似于变态杀人狂问题)通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。通常,我们会要求输出最后一位出列的人的序号。那么这里主要研究的是最后一个出列的人的序
一、概念1. 环形链表环形链表是另一种形式的链式存贮结构。它的特点是表中最后一个结点的指针域指向第一个结点,整个链表形成一个。2. 约瑟夫问题设编号为1,2,…,n 的n个人围坐一圈,约定编号为 k (1 ≤ k ≤ n) 的人从1开始报数,数到m的那个人出列,出列的人的下一位又从1开始报数,数到m的那个人又出列,以此类推,直到所有人都出列为止,由此产生一个出队编号的队列。二、环形链表和约瑟夫
转载 2023-12-10 01:32:11
213阅读
注明:本文与文章数据结构与算法_约瑟夫问题大体一致,之所以标志着链表3,是因为认为这个圈子的场景从模拟过程上讲是典型的双向循环链表的过程,即本文中第三种方法。约瑟夫(Josephus)问题来源是这样的:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式
约瑟出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫。人们站在一个等待被处决的圈子里。 计数从圆圈中的指定点开始,并沿指定方向围绕圆圈进行。 在跳过指定数量的人之后,执行下一个人。 对剩下的人重复该过程,从下一个人开始,朝同一...
原创 2022-09-23 10:34:59
72阅读
package A;public class Josephu { public static void main(String[] args) { Manage1 manage1=new Manage1(); manage1.addBox(5); manage1.showBox(); manage1 ...
转载 2021-07-25 10:22:00
106阅读
最近又看到了当时困惑自己很久的约瑟夫,本质上来说有点类似于dp,推导出f(n)与f(n-1)的转移关系递推求解。 下面是最经典的约瑟夫问题,什么?链表模拟? 不存在的>_< https://vjudge.net/problem/51Nod-1073 首先,将n个人编号为: 0,1,2,3......
转载 2017-08-09 22:22:00
80阅读
2评论
package 约瑟夫;import java.util.ArrayList;import java.util.List;public class 约瑟夫 { public static void main(String[] args) { List list = n...
转载 2015-09-24 21:49:00
99阅读
2评论
问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下
原创 2022-08-09 17:30:09
54阅读
  • 1
  • 2
  • 3
  • 4
  • 5