`

Josephus问题

 
阅读更多
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特後,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。
然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。

php 实现代码

$person_num = 41;
$person_count = 3;

$persons = array();
for($i=1;$i<=$person_num;$i++)
{
    $next = $i;
    if($i==$person_num)
    {
        $next = 0;
    }
    $persons[] = array($i, $next);
}

$next = 0;
$i = 0;
$next_next = 0;
while(count($persons)>1)
{
    $i++;
    if($i==($person_count-1))
    {
        echo "out:" . $persons[$persons[$next][1]][0] . "\n";
        $next_next = $persons[$next][1];
        $persons[$next][1] = $persons[$persons[$next][1]][1];
        unset($persons[$next_next]);
        $i = 0;
    }

    $next = $persons[$next][1];
}

echo "left:" . $persons[$next][0] . "\n";


output:
out:3
out:6
out:9
out:12
out:15
out:18
out:21
out:24
out:27
out:30
out:33
out:36
out:39
out:1
out:5
out:10
out:14
out:19
out:23
out:28
out:32
out:37
out:41
out:7
out:13
out:20
out:26
out:34
out:40
out:8
out:17
out:29
out:38
out:11
out:25
out:2
out:22
out:4
out:35
out:16
left:31
0
2
分享到:
评论

相关推荐

    Josephus问题.zip

    《Josephus问题与C语言实现解析》 在计算机科学领域,Josephus问题是一个经典的理论问题,它涉及到数学、算法和数据结构。此问题源于一个古老的传说:公元前73年,犹太人围困在马赛克城,为避免被罗马人俘虏,他们...

    一种利用labview求解Josephus问题的简单方法

    “一种利用labview求解Josephus问题的简单方法”表明该压缩包文件包含了一个使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器工程工作台)编程解决Josephus问题的示例。...

    Josephus问题c++程序

    《Josephus问题与C++程序实现详解》 Josephus问题,源自一个古老的传说,是由数学家Josephus Flavius提出的一个理论问题。在历史背景中,41个士兵被围困,他们决定每两人一组相互处决,最后一个幸存者会被释放。...

    Josephus问题C++单循环链表实现

    **Josephus问题** Josephus问题是一个著名的理论问题,源自罗马时期的犹太历史学家Flavius Josephus。在问题中,人们站成一个圈,并按照一定的顺序进行报数,每数到特定数字的人会被排除出圈,直到只剩下最后一个人...

    Josephus问题.cpp

    教你如何用数据结构的思想来解决Josephus问题 而且是用C来描述的喔

    labview的josephus问题编程

    在编程领域,经常会遇到一些经典算法问题,其中之一就是"约瑟夫斯问题"(Josephus Problem)。本篇将详细讲解如何使用LabVIEW来解决这个问题。 约瑟夫斯问题源自一个古老的传说,涉及一种生存游戏的策略。假设有n...

    Josephus问题资料

    ### Josephus问题资料知识点概述 #### 一、Josephus问题简介 Josephus问题是一个经典的理论计算机科学和数学问题,源自于犹太历史学家约瑟夫斯(Flavius Josephus)的一个故事。在这个问题中,n个人围成一个圈,并...

    josephus问题源代码

    《Josephus问题与C++实现解析》 Josephus问题,源于古罗马历史学家Flavius Josephus的一个传说,是一个经典的理论计算机科学问题。在问题中,人们围坐在一个圆圈中,按照一定的规则进行淘汰,直到只剩下最后一个人...

    (C++)Josephus问题---链式存储结构

    用链式存储结构实现Josephus问题,用户按照执行提示输入n、s、m,输出题目要求的出列顺序

    Josephus 问题的 C 语言代码

    在C语言中实现Josephus问题,通常采用链表结构来模拟这一过程。 **链表实现** 在C语言中,链表是一种常用的数据结构,它由一系列节点组成,每个节点包含数据以及指向下一个节点的指针。对于Josephus问题,我们可以...

    Visual C++ 编写的Josephus问题.rar

    《Visual C++ 实现Josephus问题详解》 Josephus问题,源自古罗马历史学家Flavius Josephus在《犹太战争》中描述的一个历史事件,后来被转化为一个经典的理论问题。该问题通常表述为:一群人站成一个圈,每隔一定的...

    Josephus问题.pdf

    Josephus问题,又称为“约瑟夫环”或“丢手绢问题”,是一个经典的计算机科学和数学问题。这个问题的起源有一个古老的故事背景,但与解决问题的具体算法设计并无直接关联。以下是Josephus问题的详细描述和一种可能的...

    josephus问题.docx

    ### Josephus问题详解 #### 一、问题背景与描述 Josephus问题是一个历史悠久且非常经典的数学和计算机科学问题。该问题通常被描述为一个约瑟夫斯环形问题:有n个人(编号从1到n)围坐成一个圈,从第一个人开始报数...

    Josephus问题的顺序表实现.rar_Josephus

    《Josephus问题的顺序表实现》 Josephus问题是一个经典的理论问题,源于古罗马时期的战争策略,后来被数学家Josephus Flavius提出并成为数学和计算机科学领域的一个经典问题。该问题通常描述为:在圆形排列的人群中...

    c++实现Josephus问题

    设有n个人围坐一圈并由1到n编号,从某个人开始报数,数到m的人出列,接着从出列的下一个人开始重新1到n报数,数到m的人又出列,如此反复地报数和出列,直到最后一个人出列为止,设计确定这n个人出列序列的程序

    Josephus问题向量实现

    《Josephus问题与向量实现解析》 Josephus问题,源于古罗马时期的历史事件,是一个经典的理论问题,常被用于探讨计算机科学中的算法设计。在该问题中,人们站成一个圈,按照一定的顺序每固定人数后淘汰一人,直至只...

    Josephus问题实现VC

    《Josephus问题的C语言实现:链表与向量法》 Josephus问题,源于古罗马历史上的一个典故,是一个经典的理论计算问题,通常被用于探讨和研究循环链表、数组以及递归算法等数据结构与算法概念。在本实验报告中,我们...

    josephus问题.rar

    Josephus问题,也称为“约瑟夫环”或“丢手绢问题”,是一个在计算机科学和数学中经典的问题。以下是对Josephus问题的清晰回答: 问题背景 Josephus问题的起源可以追溯到罗马人占领乔塔帕特后,39个犹太人与...

Global site tag (gtag.js) - Google Analytics