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源码之 ext/mysql扩展部分
Jul 17 PHP
PHP连接MongoDB示例代码
Sep 06 PHP
php中实现记住密码下次自动登录的例子
Nov 06 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
smarty自定义函数htmlcheckboxes用法实例
Jan 22 PHP
Yii2创建多界面主题(Theme)的方法
Oct 08 PHP
php获取服务器操作系统相关信息的方法
Oct 08 PHP
Yii2语言国际化的配置教程
Aug 19 PHP
PHP addAttribute()函数讲解
Feb 03 PHP
php libevent 功能与使用方法详解
Mar 04 PHP
PHP 对象接口简单实现方法示例
Apr 13 PHP
PHP实现倒计时功能
Nov 16 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执行速度全攻略(下)
2006/10/09 PHP
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
jqPlot 基于jquery的画图插件
2011/04/26 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
JS交换变量的方法
2015/01/21 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
vue中使用protobuf的过程记录
2018/10/26 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
python3 property装饰器实现原理与用法示例
2019/05/15 Python
keras之权重初始化方式
2020/05/21 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
《小动物过冬》教学反思
2014/04/17 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
实训报告范文大全
2014/11/04 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server