//一群猴子排成一圈,按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;
}
}
PHP 猴子围圈选大王
最新推荐文章于 2021-03-09 20:54:17 发布