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 相关文章推荐
PHP实现时间轴函数代码
Oct 08 PHP
PHP的可变变量名的使用方法分享
Feb 05 PHP
基于PHP Web开发MVC框架的Smarty使用说明
Apr 19 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
Sep 29 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
JS操作XML中DTD介绍及使用方法分析
Jul 04 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 PHP
TP5框架安全机制实例分析
Apr 05 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将数据导入到Foxmail的实现代码
2010/09/05 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
PHP 读取和编写 XML
2014/11/19 PHP
CI框架常用方法小结
2016/05/17 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
js利用appendChild对标签进行排序的实现方法
2016/10/16 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
vue中手机号,邮箱正则验证以及60s发送验证码的实例
2018/03/16 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
跟老齐学Python之list和str比较
2014/09/20 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
python Xpath语法的使用
2020/11/26 Python
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
Happy Plugs官网:瑞典无线耳机品牌
2020/07/16 全球购物
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
纠风工作实施方案
2014/03/15 职场文书
项目合作协议书范本
2014/04/16 职场文书
滴水洞导游词
2015/02/10 职场文书
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA
Go web入门Go pongo2模板引擎
2022/05/20 Golang