美文网首页程序员PHP经验分享
PHP猴子选大王,最优解决算法:一群猴子排成一圈,按1,2,…,

PHP猴子选大王,最优解决算法:一群猴子排成一圈,按1,2,…,

作者: 余_人 | 来源:发表于2017-12-04 11:56 被阅读828次

我们采用闭包自调用的方式,很轻松的解决了这个问题,无需循环,代码美观可读性强

1.我在桌面创建了一个php文件,实现过程如下:

function monkey(int $m,int $n){

        $arr = range(1,$n);

        $fn = function ($m,&$arr) use(&$fn){

                if( count($arr) === 1 ) { return true;  } //选出猴子大王,结束执行

                if( count($arr) >= $m ){ //判断s剩余猴子数量是否大于指定数

                        $key = array_keys($arr)[$m-1];  //第m只猴子的下标

                        unset($arr[$key]); //踢出第m只猴子

                        $arr = array_merge( array_splice($arr, $m-1),array_splice($arr,0,$m-1));

                }else{

                        $key =  array_keys($arr)[$m%count($arr)-1]; //第m只猴子的下标

                        unset($arr[$key]);

                };

                $fn($m,$arr); //自调用

};

$fn($m,$arr);  //执行

echo array_values($arr)[0]; 输出结果

}

monkey($argv[1],$argv[2]);  //调用

2. 运行过程如下:

3.命令行调用:

END 

我只是一个程序员,并不是专业写手,会不会更,在哪个博客更,都是由心情而定,如果喜欢我的可以粉我啊,说不定我就能更很多干货上来

相关文章

  • 2019-11-25

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

  • PHP猴子选大王,最优解决算法:一群猴子排成一圈,按1,2,…,

    我们采用闭包自调用的方式,很轻松的解决了这个问题,无需循环,代码美观可读性强 1.我在桌面创建了一个php文件,实...

  • 你应该熟悉的10个PHP常见算法

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

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

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

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

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

  • php实现约瑟夫环问题

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

  • PHP算法之猴子选大王

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

  • PHP 算法题猴子选大王

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

  • php解决约瑟夫环

    “约瑟夫环”是一个数学的应用问题:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它...

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

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

网友评论

    本文标题:PHP猴子选大王,最优解决算法:一群猴子排成一圈,按1,2,…,

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