今天闲着没事看到网上一个编程题目:
/**
一 群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它
踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…, 如此不停的进行下去,
直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、
n, 输出最后那个大王的编号。用程序模拟该过程。
**/
php编码如下:
$a = array(1,2,3,4,5,6,7,8,9,10);
function smonk($arr,$step){
$m = $step;
$total = 0;
while (count($arr)>1) {
$len = count($arr)+$total;
if($step>=$len){//数组重新开始,并且数组下表重新计算
while ($step>=$len) {
$step = $step - $len;
}
$arr = array_values($arr);
$total = 0;
}
//echo $arr[$step] . '<br>';
unset($arr[$step]);
$step =$step+$m;
$total ++;
}
echo isset($arr[0])?$arr[0]:$arr[1];
}
smonk($a,2);