猴子選大王

一羣猴子排成一圈,按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編程

相關文章
相關標籤/搜索