php解决约瑟夫环示例
约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)
猴子一群,都带着号码的,站好了一圈,数到m的枪毙,剩下的接着数。如此往复,死剩下的一个就疯了
<?php
function killMonkeys($monkeys, $m){
$k = $m;
while (count($monkeys)){
$k = $k - 1;
$monkey = array_shift($monkeys);
if ($k) {
$monkeys[] = $monkey;
} else {
echo "<font color='red'>" . $monkey . "</font>号猴子毙了!<br/>";
$k = $m;
}
}
echo $monkey . "号猴子斯巴达了";
}
$monkeys = range(0, 25);
unset($monkeys['0']);
$m = 5;
killMonkeys($monkeys, $m);
相关推荐
-
PHP基于递归实现的约瑟夫环算法示例
本文实例讲述了PHP基于递归实现的约瑟夫环算法.分享给大家供大家参考,具体如下: 约瑟夫环问题: 39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓.于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀.然后下一个重新报数,直到所有人都自杀身亡为止.然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏. <?php $nu
-
浅谈PHP链表数据结构(单链表)
链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个程序运行时,内存分成五个区(堆区,栈区,全局区,常量区,代码区) 规定:基本数据类型,一般放在栈区 复合数据类型,比如对象,放在堆区 定义一个类Hero 定义成员属性排名 $no 定义成员属性姓名 $name 定义成员属性昵称 $nickname 定义成员属性 $next,是一个引用,指向下一个Hero对象 定义构造函数,传递参数:
-
PHP链表操作简单示例
本文实例讲述了PHP链表操作.分享给大家供大家参考,具体如下: 在php中运行数据结构,基本都是用数组模拟的,只是用一直思想而已. 今天遇到的这个问题是,两个链表进行合并. 链表合并效果图 问题描述:A链表是模版链表,B链表的长度不确定,A,B二个链表结合后形成C链表. 说一下编程思想:A链表是模版链表所以在运算完成了,长度了唯一不变的.而B链表的长度是不确定的.所以可以先对B链表进行判断,分了三步: B链表是不是为空 B链表是不是比A链表短或者相等 B链表是不是比A链表长 编程就是要列出尽可能
-
php约瑟夫问题解决关于处死犯人的算法
本文实例讲述了php约瑟夫问题解决关于处死犯人的算法.分享给大家供大家参考.具体分析如下: 古代某法官要判决IV个犯人的死刑,他有一条荒唐的法律将犯人站成一个圆圈,从第s个人开始数起,每到第D个人就拉出来处死,然后再数D个,再拉出来处决-- 直到剩下最后一个可以赦免. function getNum($n,$m){ //用于把所有的数存到数组初始化 $a = array(); //遍历,存入数组 for($i=1;$i<=$n;$i++){ $a[$i] = $i; } //指针归0 reset
-
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
来看看这个问题的详细描述: view sourceprint?一群猴子排成一圈,按 1,2,...,n 依次编号.然后从第 1 只开始数,数到第 m 只,把它踢出圈,从它后面再开始数, 再数到第 m 只,在把它踢出去...,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王.要求编程模拟此过程,输入 m.n, 输出最后那个大王的编号. 刚开始构思的时候想使用 PHP 数组来实现(当然最后还是使用的数组),然后模拟一个数组的内部指针,结果发现想模拟一个"数组指针"不是那
-
php实现约瑟夫问题的方法小结
本文实例总结了php实现约瑟夫问题的方法.分享给大家供大家参考.具体分析如下: 一群猴子排成一圈,按1,2,...,n依次编号.然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去...,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王.要求编程模拟此过程,输入m.n, 输出最后那个大王的编号. 解析: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出
-
php实现单链表的实例代码
复制代码 代码如下: <?php //链表节点 class node { public $id; //节点id public $name; //节点名称 public $next; //下一节点 public function __construct($id, $name) { $this->id = $id; $this->name = $name; $this->next = null; } } /
-
PHP实现的基于单向链表解决约瑟夫环问题示例
本文实例讲述了PHP实现的基于单向链表解决约瑟夫环问题.分享给大家供大家参考,具体如下: 约瑟夫环问题:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止.然而Josephus 和他的朋友并不想遵从.首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人.接着,再越
-
php单链表实现代码分享
本文实例为大家分享了php单链表的具体代码,供大家参考,具体内容如下 <?php /** * 单链表 */ class Demo { private $id; public $name; public $next; public function __construct ($id = '', $name = '') { $this->id = $id; $this->name = $name; } static public function show ($head) { $cur =
-
PHP单链表的实现代码
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素. 单链表简介 链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据. 关键代码如下所示: <?php /** * 单链表 */ class Demo { private $id; public $name; public $next; public function __construct ($id = ''
-
PHP使用栈解决约瑟夫环问题算法示例
本文实例讲述了PHP使用栈解决约瑟夫环问题算法.分享给大家供大家参考,具体如下: 约瑟夫环问题: 39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓.于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀.然后下一个重新报数,直到所有人都自杀身亡为止.然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏. <?php cla
随机推荐
- 未将对象引用设置到对象的实例 (System.NullReferenceException)
- 在SQL Server中将数据导出为XML和Json的方法
- Vue.js在使用中的一些注意知识点
- Windows2000启动菜单详解
- Orcale 数据库客户端PL/SQL 中文乱码的问题解决方法
- Python的Django REST框架中的序列化及请求和返回
- Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
- js 无提示关闭浏览器页面的代码
- Android控件之ImageView用法实例分析
- des加密解密源码 C# key值问题分析
- javascript 输入框提示列表效果
- ajax中指定innerHTML时如何应用其中的SCRIPT的研究
- Javascript日期对象的dateAdd与dateDiff方法
- 网页背景渐变效果代码
- 基于BootStrap的图片轮播效果展示实例代码
- Nginx服务器中配置404错误页面时一些值得注意的地方
- java Class文件内部结构解析过程详解
- 老生常谈比较排序之堆排序
- PHP/HTML混写的四种方式总结
- 菜单制作学习一个小东西 原创