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连接mysql数据库代码
Mar 10 PHP
PHP+Mysql+jQuery实现动态展示信息
Oct 08 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
spl_autoload_register与autoload的区别详解
Jun 03 PHP
PHP中echo和print的区别
Aug 28 PHP
php+xml实现在线英文词典查询的方法
Jan 23 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
PHP中判断文件存在使用is_file还是file_exists?
Apr 03 PHP
Thinkphp实现自动验证和自动完成
Dec 19 PHP
php版微信公众平台接口开发之智能回复开发教程
Sep 22 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
php pdo连接数据库操作示例
Nov 18 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
Terran剧情介绍
2020/03/14 星际争霸
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
你必须知道的Javascript知识点之&quot;单线程事件驱动&quot;的使用
2013/04/23 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
Angular5中调用第三方js插件的方法
2018/02/26 Javascript
js实现轮播图特效
2020/05/28 Javascript
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
简明 Python 基础学习教程
2007/02/08 Python
详细解析Python当中的数据类型和变量
2015/04/25 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
利用python循环创建多个文件的方法
2018/10/25 Python
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
酒店公关部经理岗位职责
2013/11/24 职场文书
优秀的毕业生的自我评价
2013/12/12 职场文书
自我评价如何写好?
2014/01/05 职场文书
军训拉歌口号
2014/06/13 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
统计学教授推荐信
2014/09/18 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书
Python使用Kubernetes API访问集群
2021/05/30 Python
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python
MySQL数据库 安全管理
2022/05/06 MySQL