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 相关文章推荐
留言板翻页的实现详解
Oct 09 PHP
php横向重复区域显示二法
Sep 25 PHP
php反射应用示例
Feb 25 PHP
PHP和javascript常用正则表达式及用法实例
Jul 01 PHP
php生成xml时添加CDATA标签的方法
Oct 17 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
PHP实现的数独求解问题示例
Apr 18 PHP
php实现在线考试系统【附源码】
Sep 18 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 PHP
tp5.1框架数据库子查询操作实例分析
May 26 PHP
PHP sdk文档处理常用代码示例解析
Dec 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入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
深入理解js promise chain
2016/05/05 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
2017/09/07 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
python通过函数属性实现全局变量的方法
2015/05/16 Python
解决Python3中的中文字符编码的问题
2018/07/18 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
应届大学生自荐信格式
2013/09/21 职场文书
晚宴邀请函范文
2014/01/15 职场文书
致400米运动员广播稿
2014/02/07 职场文书
大学生自我评价范文分享
2014/02/21 职场文书
元宵晚会主持词
2014/03/25 职场文书
市场总经理岗位职责
2014/04/11 职场文书
学习作风建设心得体会
2014/10/22 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
党员带头倡议书
2015/04/29 职场文书
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript