php实现约瑟夫问题的方法小结


Posted in PHP onMarch 23, 2015

本文实例总结了php实现约瑟夫问题的方法。分享给大家供大家参考。具体分析如下:

一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去...,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。

解析:

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

方法一:

<?php
function getLeader($n,$m) { 
  $res=0; 
  for($i=2; $i<=$n; $i++) {
    $res=($res+$m)%$i; 
  }
  return $res+1; 
} 
$leader = getLeader(13,34);
echo $leader;
?>

方法二:

<?php
//定义函数
function getKing($monkeys , $m , $current = 0){
  $number = count($monkeys);
  $num = 1;
  if(count($monkeys) == 1){
    echo '<font color="red">编号为'.$monkeys[0].'的猴子成为猴王了!</font>';
    return;
  }else{
    while($num++ < $m){
      $current++ ;
      $current = $current%$number;
    }
    echo "编号为".$monkeys[$current]."的猴子被踢掉了...<br/>";
    array_splice($monkeys , $current , 1);
    getKing($monkeys , $m , $current);
  }
}
$n=13;   //总共猴子数目
$m = 34;  //数到第几只的那只猴子被踢出去
$monkeys = range(1,$n); //将猴子编号放入数组中
getKing($monkeys , $m);   //调用函数
?>

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

PHP 相关文章推荐
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
一个分页的论坛
Oct 09 PHP
php设计模式 Decorator(装饰模式)
Jun 26 PHP
深入解析phpCB批量转换的代码示例
Jun 27 PHP
php通过session防url攻击方法
Dec 10 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
PHP命名空间和自动加载类
Apr 03 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
Jan 12 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
php使用curl获取header检测开启GZip压缩的方法
Aug 15 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
Apr 06 PHP
PHP并发场景的三种解决方案代码实例
Feb 27 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 #PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 #PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 #PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 #PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 #PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 #PHP
PHP输出两个数字中间有多少个回文数的方法
Mar 23 #PHP
You might like
默默小谈PHP&amp;MYSQL分页原理及实现
2007/01/02 PHP
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
php中请求url的五种方法总结
2017/07/13 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
又一个小巧的图片预加载类
2007/05/05 Javascript
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
解析javascript系统错误:-1072896658的解决办法
2013/07/08 Javascript
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
JS命令模式例子之菜单程序
2016/10/10 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
Node.js fs模块原理及常见用途
2020/10/22 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
python求pi的方法
2014/10/08 Python
Python中的hypot()方法使用简介
2015/05/18 Python
python遍历小写英文字母的方法
2019/01/02 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
医学专业职业生涯规划范文
2014/02/05 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
终止劳动合同通知书
2015/04/16 职场文书
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电