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图片上传程序
Mar 27 PHP
模板引擎正则表达式调试小技巧
Jul 20 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
Jun 03 PHP
ThinkPHP快速入门实例教程之数据分页
Jul 01 PHP
PHP经典算法集锦【经典收藏】
Sep 14 PHP
php实现查询功能(数据访问)
May 23 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
May 23 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
实例讲解php将字符串输出到HTML
Jan 27 PHP
Laravel+Intervention实现上传图片功能示例
Jul 09 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 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
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
PHP 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
PHP中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
javascript引用对象的方法
2007/01/11 Javascript
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
关于vue.js发布后路径引用的问题解决
2017/08/15 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
express+vue+mongodb+session 实现注册登录功能
2018/12/06 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python中的闭包实例详解
2014/08/29 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
pandas计数 value_counts()的使用
2019/06/24 Python
使用pip安装python库的多种方式
2019/07/31 Python
python-地图可视化组件folium的操作
2020/12/14 Python
房屋租赁协议书
2014/04/10 职场文书
入股协议书
2014/04/14 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书