本文实例讲述了PHP实现的猴王算法。分享给大家供大家参考,具体如下:

function getKingMokey($n, $m)

{

$monkey[0] = 0;

//将1-n只猴子顺序编号 入数组中

for($i= 1; $i<= $n; $i++)

{

$monkey[$i] = $i;

}

$len = count($monkey);

//循环遍历数组元素(猴子编号)

for($i= 0; $i< $len; $i= $i)

{

$num = 0;

foreach($monkey as $key => $value)

{

if($value == 0) continue;

$num++;

$values = $value;

}

//若只剩一只猴子 则输出该猴子编号(数组元素值) 并退出循环

if($num == 1)

{

echo $values;

exit;

}

//将第$i只猴子踢出队伍(相应数组位置元素值设为0)

$monkey[$i] = 0;

//打印该猴子位置

echo $i."";

//设置计数器

for($j= 1; $j<= $m; $j++)

{

//猴子编号加一,遍历下一只猴子

$i++;

//若该猴子未被踢出队伍,获取下一只猴子编号

if($monkey[$i] > 0) continue;

//若元素值为0,则猴子已被踢出队伍,进而循环取下一只猴子编号

if($monkey[$i] == 0)

{

//取下一只猴子编号

for($k= $i; $k< $len; $k++)

{

//值为0,编号加1

if($monkey[$k] == 0) $i++;

//否则,编号已取得,退出

if($monkey[$k] > 0) break;

}

}

//若编号大于猴子个数,则从第0只猴子开始遍历(数组指针归零)

//步骤同上

if($i == $len) $i = 0;

//同上步骤,获取下一只猴子编号

if($monkey[$i] == 0)

{

for($k= $i; $k< $len; $k++)

{

if($monkey[$k] == 0) $i++;

if($monkey[$k] > 0) break;

}

}

}

}

}

//猴子个数

$n = 10;

//踢出队伍的编号间隔值

$m = 3;

//调用猴王获取函数

getKingMokey($n, $m);

?>

运行结果:

036927185104

用递归的算法

$monkeys = array(1 , 2 , 3 , 4 , 5 , 6 , 7, 8 , 9 , 10); //monkey的编号

$m = 4; //数到第几只的那只猴子被踢出去

function killMonkey($monkeys , $m , $current = 0){

$number = count($monkeys);

$num = 1;

if(count($monkeys) == 1){

echo $monkeys[0]."成为猴王了";

return;

}

else{

while($num++ < $m){

$current++ ;

$current = $current%$number;

}

echo $monkeys[$current]."的猴子被踢掉了
";

array_splice($monkeys , $current , 1);

killMonkey($monkeys , $m , $current);

}

}

killMonkey($monkeys , $m);

运行结果:

4的猴子被踢掉了

8的猴子被踢掉了

2的猴子被踢掉了

7的猴子被踢掉了

3的猴子被踢掉了

10的猴子被踢掉了

9的猴子被踢掉了

1的猴子被踢掉了

6的猴子被踢掉了

5成为猴王了

希望本文所述对大家PHP程序设计有所帮助。

php五只猴子分椰子_PHP实现的猴王算法(猴子选大王)示例相关推荐

  1. php五只猴子分椰子_(笔试题)分椰子

    题目: 话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有棵椰子树,还有一只猴子! 大家把椰子全部采摘下来放在一起,但是天已经很晚了,所以就睡觉 ...

  2. php五只猴子分椰子_tubes五只雪茄_phillies雪茄五只装

    文章摘要:tubes五只雪茄_phillies雪茄五只装,tubes五只雪茄,tubes雪茄多少钱,丹纳曼雪茄价格表,丹纳曼雪茄5. 第1条:tubes五只雪茄,TUBES这个牌子的雪茄多少钱? [最 ...

  3. java猴子分桃_java编写程序五只猴子分海滩上的一堆桃子答案

    下面给大家分享的编程题是和猴子分桃有关的内容,那么这道题目是怎样的呢?这道题目又应该如何来做解答?一起来看看具体的题目内容和答案吧. 首先我们要来看一下问题,下面是具体的题目. 一.题目 现在,在海滩 ...

  4. 猴子选大王 (20 分)

    7-10 猴子选大王 (20 分) 一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧 ...

  5. 7-28 猴子选大王 (20 分)

    猴子选大王 (20 分) 一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只 ...

  6. PTA 7-28 猴子选大王 (20 分)-gcc编译器过不了?

    综述: 猴子选大王这道题看着好像挺简单的,但是实际做起来也不容易.猴子的编号从1到N,然后报数,首先面对的第一个问题是怎么存储这些个猴子,我最开始想用链表,因为链表删除数据容易点,而数组要是删除中间的 ...

  7. PTA基础题目集 7-28 猴子选大王 (20 分)

    一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数.如此不 ...

  8. php面试 猴子大王,php猴子选大王问题解决方法,猴子大王_PHP教程

    php猴子选大王问题解决方法,猴子大王 本文实例讲述了php猴子选大王问题解决方法.分享给大家供大家参考.具体分析如下: 问题描述: 一群猴子排成一圈,按1,2,...,n依次编号.然后从第1只开始数 ...

  9. (循环练习题) 五只猴子分桃子

    题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿 ...

最新文章

  1. html显示数据库图片django,django将图片上传数据库后在前端显式的方法
  2. CentOS7下搭建Nextcloud13.0.5
  3. 延迟加载图片并监听图片加载完成
  4. 邮件防伪SPF,反垃圾邮件
  5. linux 哪个进程在使用串口_Linux内核的整体架构
  6. 5月19-20日的上海 来一次纯粹的WebRTC之旅
  7. c#简单自定义异常处理日志辅助类
  8. [bzoj 2726] 任务安排 (斜率优化 线性dp)
  9. VUE:EventHub
  10. 互联生活:业务模式聚焦
  11. scala java抽象理解_scala – 抽象覆盖如何在Java代码方面起作用?
  12. 如何修改云服务器连接密码错误,如何修改云服务器连接密码
  13. 第三方服务--短信接口
  14. 初级产品经理的日常工作流程汇总
  15. php 制作简易论坛,Dreamweaver打造PHP网站之简易论坛教程
  16. [js高手之路]html5 canvas动画教程 - 跟着鼠标移动消失的一堆炫彩小球
  17. JMokit中的@Mocked与@Injectable区别
  18. 记一次收到QQ邮箱钓鱼邮件经历
  19. 人不是因为有面子才牛逼,而是因为变牛逼才有面子
  20. Python、Pycharm、Django及各插件安装经验汇总

热门文章

  1. 每日百万订单,这样的技术方案更靠谱
  2. 这一次,你能彻底搞懂 Flink!
  3. K8s如何改变美团的云基础设施?
  4. 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?
  5. Sharding-JDBC:垂直拆分怎么做?
  6. 深入分析SpringBoot源码如何内嵌Tomcat容器?
  7. 职场协同办公如何使用硬技能,助推团队协作更流畅?
  8. OKR目标管理法不会用?看最新客户服务团队OKR模板
  9. CMS发生FullGc分析
  10. 分布式存储系统的关键技术-存储层级内的优化技术