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;    }}


原创粉丝点击