PHP基于关联数组20行代码搞定约瑟夫问题示例
本文实例讲述了PHP基于关联数组20行代码搞定约瑟夫问题。分享给大家供大家参考,具体如下:
记得前段时间一写做java开发的兄弟对我说他java60行做了个约瑟夫问题,挺不错的。调侃php应该写这个挺不行的。
于是 呵呵。。。 洋洋洒洒 20行,写完自己都有些不相信了。哈哈 让不了解php的见识哈php的快捷轻便之处。
ps:其实个人挺反感用代码行数来衡量代码数量的,感觉常把代码行数挂嘴边的大多无奈装2。此文仅属闲余娱乐。
回顾一下约瑟夫问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。
实现代码如下:
<?php $n=7; echo "well,let us test $n<br/>"; for($i=1;$i<$n;$i++){ $a["$i"]=$i+1; $flag[$i]="in"; } $a["$n"]=1; foreach($a as $key=>$value){ echo $key."=>".$value."</br>"; } $key=1;$out=0;$r=0; while($out<$n){ $r++; if($r==2){ echo"$a[$key]<br/>";// out $a[$key]=$a[$a[$key]]; $out++;$r=0; } $key=$a[$key]; }
运行结果:
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》
希望本文所述对大家PHP程序设计有所帮助。
相关推荐
-
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
来看看这个问题的详细描述: view sourceprint?一群猴子排成一圈,按 1,2,...,n 依次编号.然后从第 1 只开始数,数到第 m 只,把它踢出圈,从它后面再开始数, 再数到第 m 只,在把它踢出去...,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王.要求编程模拟此过程,输入 m.n, 输出最后那个大王的编号. 刚开始构思的时候想使用 PHP 数组来实现(当然最后还是使用的数组),然后模拟一个数组的内部指针,结果发现想模拟一个"数组指针"不是那
-
PHP关联数组的10个操作技巧
什么是数组? 在使用 PHP 进行开发的过程中,或早或晚,您会需要创建许多相似的变量. 无需很多相似的变量,你可以把数据作为元素存储在数组中. 数组中的元素都有自己的 ID,因此可以方便地访问它们. 关联数组 关联数组,它的每个 ID 键都关联一个值. 在存储有关具体命名的值的数据时,使用数值数组不是最好的做法. 通过关联数组,我们可以把值作为键,并向它们赋值. 这篇文章将介绍10个操作PHP关联数组的技巧,熟练运用能帮助你提高开发效率. 1.添加数组元素 PHP是一种弱类型语言,这意味着你不需
-
PHP关联数组实现根据元素值删除元素的方法
本文实例讲述了PHP关联数组实现根据元素值删除元素的方法.分享给大家供大家参考.具体如下: <?php $array1 = array("a" => "green", "red", "blue", "red"); $array2 = array("b" => "green"); $result = array_diff($array1, $array
-
PHP基于递归实现的约瑟夫环算法示例
本文实例讲述了PHP基于递归实现的约瑟夫环算法.分享给大家供大家参考,具体如下: 约瑟夫环问题: 39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓.于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀.然后下一个重新报数,直到所有人都自杀身亡为止.然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏. <?php $nu
-
大家都应该掌握的PHP关联数组使用技巧
在使用 PHP 进行开发的过程中,或早或晚,您会需要创建许多相似的变量,这时候你可以把数据作为元素存储在数组中.数组中的元素都有自己的 ID,因此可以方便地访问它们. 关联数组 关联数组,它的每个 ID 键都关联一个值.在存储有关具体命名的值的数据时,使用数值数组不是最好的做法.通过关联数组,我们可以把值作为键,并向它们赋值. 这里介绍10个操作PHP关联数组的技巧,熟练运用能帮助你提高开发效率. 1.添加数组元素 PHP是一种弱类型语言,这意味着你不需要显示声明一个数组及其大小,相反,你可以同
-
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实现的基于单向链表解决约瑟夫环问题.分享给大家供大家参考,具体如下: 约瑟夫环问题:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止.然而Josephus 和他的朋友并不想遵从.首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人.接着,再越
-
php解决约瑟夫环示例
约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,类似问题又称为约瑟夫环.又称"丢手绢问题".) 猴子一群,都带着号码的,站好了一圈,数到m的枪毙,剩下的接着数.如此往复,死剩下的一个就疯了 复制代码 代码如下: <?phpfunction killMonkeys($monkeys, $m){ $k = $m; while (count($monkeys)){ $k = $k - 1; $mon
-
PHP使用栈解决约瑟夫环问题算法示例
本文实例讲述了PHP使用栈解决约瑟夫环问题算法.分享给大家供大家参考,具体如下: 约瑟夫环问题: 39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓.于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀.然后下一个重新报数,直到所有人都自杀身亡为止.然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏. <?php cla
-
php实现约瑟夫问题的方法小结
本文实例总结了php实现约瑟夫问题的方法.分享给大家供大家参考.具体分析如下: 一群猴子排成一圈,按1,2,...,n依次编号.然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去...,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王.要求编程模拟此过程,输入m.n, 输出最后那个大王的编号. 解析: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出
随机推荐
- Hbuilder配置Avalon和Vue指令提示的方法详解
- SpringMVC文件上传 多文件上传实例
- javascript 自动转到命名锚记
- ORACLE学习笔记-查询篇
- Bootstrap每天必学之警告框插件
- Java Web过滤器详解
- iOS点击推送消息跳转处理
- Python操作SQLite简明教程
- Golang算法问题之整数拆分实现方法分析
- C#实现xml文件的读取与写入简单实例
- C#反射内存的处理分析
- Vue-Router实现页面正在加载特效方法示例
- bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
- js 操作select与option(示例讲解)
- NodeJS测试框架mocha入门教程
- css也疯狂! 用background 插入flash播放器
- 从汇编看c++中的多态详解
- sqlserver 中ntext字段的批量替换(updatetext的用法)
- sqlserver下Kill 所有连接到某一数据库的连接
- Javascript前端UI框架Kit使用指南之kitjs事件管理