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 相关文章推荐
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
PHP人民币金额数字转中文大写的函数代码
Feb 27 PHP
解析php如何将日志写进syslog
Jun 28 PHP
CodeIgniter CLI模式简介
Jun 17 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
PHP动态输出JavaScript代码实例
Feb 12 PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 PHP
php简单判断两个字符串是否相等的方法
Jul 13 PHP
php生成唯一数字id的方法汇总
Nov 18 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 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
phpBB BBcode处理的漏洞
2006/10/09 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
highcharts.js数据绑定方式代码实例
2019/11/13 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
mac系统安装Python3初体验
2018/01/02 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
python实现指定ip端口扫描方式
2019/12/17 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
2020/03/25 Python
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
php优化查询foreach代码实例讲解
2021/03/24 PHP
综合办公室主任职责
2013/12/16 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书
外出培训学习心得体会
2016/01/18 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技