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 全文搜索和替换的实现代码
Jul 29 PHP
PHP 多进程 解决难题
Jun 22 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
php强制运行广告的方法
Dec 01 PHP
PHP计算加权平均数的方法
Jul 16 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 PHP
thinkphp5使html5实现动态跳转的例子
Oct 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模板函数 正则实现代码
2012/10/15 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访-EG篇
2018/04/03 DOTA
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014/04/26 Python
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
Python制作动态字符图的实例
2019/01/27 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
泰国王权免税店官方网站:KingPower
2019/03/11 全球购物
会计自我鉴定
2014/02/04 职场文书
医学专业职业生涯规划范文
2014/02/05 职场文书
计算机学生的自我评价分享
2014/02/18 职场文书
退休教师追悼词
2015/06/23 职场文书
庆七一活动简报
2015/07/20 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫
浅析Python OpenCV三种滤镜效果
2022/04/11 Python
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技