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 相关文章推荐
SMARTY学习手记
Jan 04 PHP
php Undefined index的问题
Jun 01 PHP
php 连接mssql数据库 初学php笔记
Mar 01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
php简单判断两个字符串是否相等的方法
Jul 13 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
Symfony学习十分钟入门经典教程
Feb 03 PHP
CI框架常用方法小结
May 17 PHP
PHP弱类型语言中类型判断操作实例详解
Aug 10 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
用PHP做了一个领取优惠券活动的示例代码
Jul 05 PHP
PHP加MySQL消息队列深入理解
Feb 27 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
Apache服务器无法使用的解决方法
2013/05/08 PHP
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
php中mysql操作buffer用法详解
2015/03/19 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
js轮播图代码分享
2016/07/14 Javascript
node通过npm写一个cli命令行工具
2017/10/12 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
python通过post提交数据的方法
2015/05/06 Python
python 等差数列末项计算方式
2020/05/03 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
python 5个实用的技巧
2020/09/27 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
垃圾回收的优点和原理
2014/05/16 面试题
财务主管自我鉴定
2014/01/17 职场文书
烹调加工管理制度
2014/02/04 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
党员公开承诺书2016
2016/03/24 职场文书
css3新特性的应用示例分析
2022/03/16 HTML / CSS