程序员PHP经验分享

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

2017-12-04  本文已影响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 

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

上一篇 下一篇

猜你喜欢

热点阅读