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在XP下IIS和Apache2服务器上的安装
Sep 05 PHP
PHP的宝库目录--PEAR
Oct 09 PHP
PHP的开合式多级菜单程序
Oct 09 PHP
PHP常用编译参数中文说明
Sep 27 PHP
php使用memcoder将视频转成mp4格式的方法
Mar 12 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
分享PHP函数实现数字与文字分页代码
Jul 28 PHP
php实现图片上传并利用ImageMagick生成缩略图
Mar 14 PHP
php实现生成验证码实例分享
Apr 10 PHP
php使用 readfile() 函数设置文件大小大小的方法
Aug 11 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
php中加密解密DES类的简单使用方法示例
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
PHP中替换换行符的几种方法小结
2012/10/15 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
可简单避免的三个JS发布错误的详细介绍
2013/08/02 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
Python计算程序运行时间的方法
2014/12/13 Python
玩转python爬虫之正则表达式
2016/02/17 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
spyder常用快捷键(分享)
2017/07/19 Python
Python定时器实例代码
2017/11/01 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
工作自我评价怎么写
2014/01/29 职场文书
趣味运动会活动方案
2014/02/12 职场文书
初三学习决心书
2014/03/11 职场文书
学校评语大全
2014/05/06 职场文书
学生检讨书怎么写
2014/10/09 职场文书
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android