一羣猴子排成一圈,按1,2,…,n依次編號。而後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去…,如此不停的進行下去,直到最後只剩下一隻猴子爲止,那隻猴子就叫作大王。要求編程模擬此過程,輸入m、n, 輸出最後那個大王的編號。用程序模擬該過程。php
//寫一個方法 function monkey($n ,$m){ $arr = range(1,$n); //構造數組 array(1,2,3,4,5,6,7,8); $i = 0; //設置數組指針 while(count($arr)>1){ //遍歷數組,判斷當前猴子是否爲出局序號,若是是則出局,不然放到數組最後 if(($i+1) % $m ==0) { unset($arr[$i]); } else { //array_push() 函數向第一個參數的數組尾部添加一個或多個元素(入棧),而後返回新數組的長度。 array_push($arr ,$arr[$i]); //本輪非出局猴子放數組尾部 unset($arr[$i]); //刪除 } $i++; } return $arr; } print_r(monkey(15,12)); //Array ( [168] => 5 ) //第五隻爲大王
文章轉載:http://www.dodobook.net/php/2284編程