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 相关文章推荐
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
Dec 19 PHP
PHP的加密方式及原理
Jun 14 PHP
wamp下修改mysql访问密码的解决方法
May 07 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
PHP中对缓冲区的控制实现代码
Sep 29 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
php过滤敏感词的示例
Mar 31 PHP
推荐10个提供免费PHP脚本下载的网站
Dec 31 PHP
PHP编程之设置apache虚拟目录
Jul 08 PHP
PHP仿微信发红包领红包效果
Oct 30 PHP
PHP中SQL查询语句的id=%d解释(推荐)
Dec 10 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中数据的批量导入(csv文件)
2006/10/09 PHP
动易数据转成dedecms的php程序
2007/04/07 PHP
数据库中排序的对比及使用条件详解
2012/02/23 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
初识JQuery 实例一(first)
2011/03/16 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
详解.vue文件解析的实现
2018/06/11 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
2019/01/07 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
python实现电子词典
2020/04/23 Python
Python 统计字数的思路详解
2018/05/08 Python
python发送邮件脚本
2018/05/22 Python
python中字符串的操作方法大全
2018/06/03 Python
python事件驱动event实现详解
2018/11/21 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
django中嵌套的try-except实例
2020/05/21 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
药学专业大学生自荐信
2013/09/28 职场文书
环保倡议书格式范文
2014/05/14 职场文书
Windows server 2012搭建FTP服务器
2022/04/29 Servers