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模板技术原理【一】
Jan 10 PHP
php中time()和mktime()方法的区别
Sep 28 PHP
PHP生成Gif图片验证码
Oct 27 PHP
php缩小png图片不损失透明色的解决方法
Dec 25 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 PHP
PHP上传图片类显示缩略图功能
Jun 30 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
Apr 17 PHP
PHP实现的操作数组类库定义与用法示例
May 24 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在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
PHP array_push 数组函数
2009/12/26 PHP
php学习笔记之 函数声明(二)
2011/06/09 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
网页里控制图片大小的相关代码
2006/06/25 Javascript
XP折叠菜单&amp;仿QQ2006菜单
2006/12/16 Javascript
Z-Blog中用到的js代码
2007/03/15 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
node在两个div之间移动,用ztree实现
2013/03/06 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
2017/12/28 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
Python实现简单的文件传输与MySQL备份的脚本分享
2016/01/03 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
戴尔英国官网:Dell英国
2017/05/27 全球购物
室内设计实习自我鉴定
2013/09/25 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
会计工作态度自我评价
2015/03/06 职场文书
大学生党课心得体会
2016/01/07 职场文书
《藏戏》教学反思
2016/02/23 职场文书
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫