PHP----------一羣猴子排成一圈,按1,2,...,n依次編號。

一、一羣猴子排成一圈,按1,2,...,n依次編號。而後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去...,如此不停的進行下去,編程

  直到最後只剩下一隻猴子爲止,那隻猴子就叫作大王。要求編程模擬此過程,輸入m、n, 輸出最後那個大王的編號。數組

    function fn($n ,$m)
    {
        $arr = range(1,$n);

        $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]);   //刪除  array_push函數只是將元素複製一份挪到了尾部,因此本來的那個必須刪除
               }
               $i++;
        }
        return $arr;
    }
    print_r(fn(3,3));
   函數

相關文章
相關標籤/搜索