问题描述:
一群猴子按编号围成一圈,然后从第一只开始数,数到第m只,把他踢出圈,然后再从他后面开始数,数到第m只,再把他踢出圈,如此下去,直到剩下最后一个猴子为止。
算法实现:
<?PHP
function MonkeyKing($n,$m){
$monkey = range(1,$n);//生成1-n的数组
$i = 0;
while(count($monkey)>1){
$i++;
$head = array_shift($monkey);//获得第一个数
if($i % $m != 0){
//如果不是m的倍数,则将i放到数组末尾,也即是去掉m。
$monkey = array_push($monkey,$head);
}
}
return $monkey[0];
}