PHP基于递归实现的约瑟夫环算法示例


Posted in PHP onAugust 27, 2017

本文实例讲述了PHP基于递归实现的约瑟夫环算法。分享给大家供大家参考,具体如下:

约瑟夫环问题: 39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓。于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀。然后下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。

<?php
$num = 41;
$step = 3;
function joseph($arr, $step, $start, $survivors)
{
  foreach($arr as $k => $v)
  {
    if($start % $step === 0)
    {
      unset($arr[$k]);
      $start = 1;
    }
    else
    {
      $start ++;
    }
  }
  if(count($arr) > $survivors)
    return joseph($arr, $step, $start, $survivors);
  else
    return $arr;
}
$i = 0;
$arr = [];
while($i ++ < $num){
  $arr[] = $i;
}
$arr = joseph($arr, 3, 1, 2);
print_r($arr);

执行结果:

Array
(
  [15] => 16
  [30] => 31
)

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php页面缓存ob系列函数介绍
Oct 18 PHP
php三种实现多线程类似的方法
Oct 30 PHP
PHP简单的MVC框架实现方法
Dec 01 PHP
PHP生成及获取JSON文件的方法
Aug 23 PHP
Zend Framework前端控制器用法示例
Dec 11 PHP
PHP-FPM和Nginx的通信机制详解
Feb 01 PHP
PHP实现微信小程序用户授权的工具类示例
Mar 05 PHP
wordpress自定义标签云与随机获取标签的方法详解
Mar 22 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 PHP
PHP如何解决微信文章图片防盗链
Dec 09 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 PHP
PHP7 新增常量
Mar 09 PHP
PHP实现的简单sha1加密功能示例
Aug 27 #PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 #PHP
详解PHP swoole process的使用方法
Aug 26 #PHP
Yii2框架可逆加密简单实现方法
Aug 25 #PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 #PHP
php变量与JS变量实现不通过跳转直接交互的方法
Aug 25 #PHP
CodeIgniter整合Smarty的方法详解
Aug 25 #PHP
You might like
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
js arguments,jcallee caller用法总结
2013/11/30 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
python通过加号运算符操作列表的方法
2015/07/28 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
人机交互程序 python实现人机对话
2017/11/14 Python
python命令行工具Click快速掌握
2019/07/04 Python
自定义django admin model表单提交的例子
2019/08/23 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
性能服装:HYLETE
2018/08/14 全球购物
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
《孔子游春》教学反思
2014/02/25 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
优秀党员先进材料
2014/12/18 职场文书
校长师德表现自我评价
2015/03/05 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书