約瑟夫環 猴子選大王
阿新 • • 發佈:2018-11-08
<?
/**
* 猴子選大王:一群猴子排成一圈,按1,2,…,n依次編號。
* 然後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去…,
* 如此不停的進行下去,直到最後只剩下一隻猴子為止,那隻猴子就叫做大王。
* 要求程式設計模擬此過程,輸入m、n, 輸出最後那個大王的編號。用程式模擬該過程。
*/
function numOfKing($n, $m)
{
$arr = range(1, $n); // 1 - n
$i=0; // 陣列索引從 0 開始。 陣列剩餘一個元素為結束條件
while(count($arr>1)) {
if( ($i+1)%$m==0 ) {
unset($arr[$i]); // 將數到的數字移除
} else {
// 將不是的從當前位置刪除,放到陣列的結尾處。
array_push($arr, $arr[$i]);
unset($arr[$i]);
}
$i++; // 不停地往後數
}
return $arr[$i];
}