* 一群猴子排成一圈,按1,2,…,n依次編號。然后從第1只開始數,數到第m只,把它踢出圈,
* 從它后面再開始數,再數到第m只,在把它踢出去…,如此不停的進行下去,
* 直到最后只剩下一只猴子為止,那只猴子就叫做大王。要求編程模擬此過程,輸入m、n, 輸出最后那個大王的編號*/
剛開發搞PHP一周,看了下面試題。如是乎寫下實現方法,可能有錯誤。
<html>
<head>
<title>測試表單提交</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<?php
$monkeys[]='';
$m=45;
$n=6;
$index=0;
for($i=0;$i<45;$i++)
{
$monkeys[$i]=$i+1;
}
echo $m."只猴子排成一圈,按1,2,…,45依次編號。然后從第1只開始數,數到第".$n."只,把它踢出圈,最后剩下編號為";
function whoisKing($monkeys,$n,$index){
if(count($monkeys)==1){
echo $monkeys[0].'的猴子,他就是猴王!誰不服氣';
return;
}
//echo "當前還剩".count($monkeys)."個猴子如下<br/>";
for($i=0;$i<count($monkeys);$i++){
//echo $monkeys[$i]." ";
}
//echo "<br/>";
$tempIndex=$index;
$tempCount=count($monkeys);
for($i=0;$i<$tempCount;$i++){
if(($i+1+$index)%$n==0)
{
//echo $monkeys[$i]."出局<br/>";
unset($monkeys[$i]);
}
$tempIndex++;
$tempIndex=$tempIndex%$n;
}
whoisKing(array_values($monkeys),$n,$tempIndex);
}
whoisKing($monkeys,$n,$index);
?>
</body>
</html>
