PHP 猴子围圈选大王
来源:互联网 发布:淘宝网店运营专才考试 编辑:程序博客网 时间:2024/04/30 02:53
//一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,//从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩//下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。//m=50 n=3//一串由17个数字排列成一个圆环,现在从第1个位置开始计数,沿着圆环去掉被3整除的位置和数字function monkey($m, $n) { //把猴子装进数组里 for ($i = 1; $i <= $m; $i++) { $monkey_array[$i] = $i; } while (count($monkey_array) > 2) { foreach ($monkey_array as $k => $v) { if ($k % $n == 0) { unset($monkey_array[$k]); } else { array_push($monkey_array, $monkey_array[$k]); unset($monkey_array[$k]); } } } return $monkey_array;}//print_r(monkey(5,3));//die;function cons($m) { for ($i = 1; $i <= $m; $i++) { $monkey_array[$i] = $i; } return digui($monkey_array);}//递归function digui($monkey_array) { foreach ($monkey_array as $k => $v) { if ($k % 3 == 0) { unset($monkey_array[$k]); } else { array_push($monkey_array, $monkey_array[$k]); unset($monkey_array[$k]); } } if (count($monkey_array) > 2) { return digui($monkey_array); } else { return $monkey_array; }}