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 相关文章推荐
改进的IP计数器
Oct 09 PHP
php win下Socket方式发邮件类
Aug 21 PHP
PHPMyadmin 配置文件详解(配置)
Dec 03 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
Sep 23 PHP
PHP循环语句笔记(foreach,list)
Nov 29 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
9段PHP实用功能的代码推荐
Oct 14 PHP
PHP简单判断手机设备的方法
Aug 23 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
Oct 13 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 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 显示指定路径下的图片
2009/10/29 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
jQuery.each使用详解
2015/07/07 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
Bootstrap基本样式学习笔记之按钮(4)
2016/12/07 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
python采用getopt解析命令行输入参数实例
2014/09/30 Python
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
python类继承用法实例分析
2015/05/27 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
python自动化生成IOS的图标
2018/11/13 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
文艺晚会主持词
2014/03/24 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
Python学习之异常中的finally使用详解
2022/03/16 Python
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers