美文网首页PHP经验分享
PHP算法之猴子选大王

PHP算法之猴子选大王

作者: 小牛_6666 | 来源:发表于2019-08-19 15:44 被阅读2次

猴子选大王

一群猴子要选新猴王。新猴王的选择方法是:让M只候选猴子围成一圈,从某位置起顺序编号为1~M号。从第1号开始报数,每轮从1报到N,凡报到N的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

输入

请输入猴子的数量m 11
请输入要排除第几个猴子n 3

输出

7

分析

常规做法又两种,一种是数组,一种是链表,(数学方法不考虑)。对于数组方法测试了两种思路,第一种是生成一个键为1-M的关联数组,值为true,退出的键值为false;另一种是值为1-M的数值数组,退出的unset;结果是使用unset效率更高些。链表是用数组模拟的链表,生成键为1-M的关联数组,值为下一位的键值,最后一位的值为1。退出了就把上一位和下一位链接起来。测试表明,使用链表的速度快于数组。

代码如下

<?php
echo "请输入猴子的数量m\n";
$m=intval(fgets(STDIN));
echo "请输入要排除第几个猴子n\n";
$n=intval(fgets(STDIN));
//1.数组方法
$start=microtime(true);
$arr=range(1,$m);
$j=0;
while (count($arr)>1){
    $tmp_arr=$arr;
    foreach ($tmp_arr as $k=>$v){
        $j++;
        if($j==$n){
            $j=0;
            unset($arr[$k]);
        }
    }
}
$end=microtime(true);
echo "数组方法:用时".($end-$start)."\t".reset($arr) ."\n";
unset($arr);

//2.链表
$start=microtime(true);
for ($i=1;$i<$m;$i++){
    $arr[$i]=$i+1;
}
$arr[$m]=1;
$i=1;
while ($i!=$arr[$i]){
    for($j=1;$j<$n-1;$j++){
        $i=$arr[$i];
    }
    $arr[$i]=$arr[$arr[$i]];
    $i=$arr[$i];
}
$end=microtime(true);
echo "链表方法:用时".($end-$start)."\t".$i."\n";

运行结果

请输入猴子的数量m
5000
请输入要排除第几个猴子n
5000
数组方法:用时1.2660729885101  3977
链表方法:用时0.77004408836365 3977

相关文章

  • PHP算法之猴子选大王

    猴子选大王 一群猴子要选新猴王。新猴王的选择方法是:让M只候选猴子围成一圈,从某位置起顺序编号为1~M号。从第1号...

  • PHP 算法题猴子选大王

    题目 一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再...

  • php面试题-猴子选大王算法实现

  • 猴子选大王

    一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第...

  • PHP经典面试题,猴子选大王!

    一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第...

  • (改)~-7 猴子选大王

    7-7 猴子选大王(20 分)一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为...

  • 约瑟夫环类问题的简单解法

    原创 猴子选大王 一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从...

  • python-猴子选大王问题

    一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每...

  • 《猴子大王》

    狮子死了,谁来当大王呢?小动物都在议论着,可是不管小动物们说谁,小猴都不同意,小动物们看着只有小猴可以当大...

  • 2019-11-25

    php小试猴子找大王1、一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从...

网友评论

    本文标题:PHP算法之猴子选大王

    本文链接:https://www.haomeiwen.com/subject/tjzssctx.html