一群猴子排成一圈,按1,2,...,n依次編號。然後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數, 再數到第m只,在把它踢出去...,如此不停的進行下去, 直到最後只剩下乙隻猴子為止,那只猴子就叫做大王。要求程式設計模擬此過程,輸入m、n, 輸出最後那個大王的編號。
解析:約瑟夫環是乙個數學的應用問題:已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報程式設計客棧數,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列。
方法一:
<?php function getleader($n,$m)
return $res+1;
} $leader = getleader(13,34);
echo $leader;程式設計客棧
?>
方法二:
<?php //定義函式
function getking($monkeys , $m , $current = 0)else
echo "編號為".$monkeys[$current]."的猴子被踢掉了...
www.cppcns.comt;";
array_splice($monkeys , $current , 1);
getking($monkeys , $m , $current);
}}$n=13; //總共猴子數目
$m = 34; 數到第幾隻的那只猴子被踢出去
$monkeys = range(1,$n); //將猴子編號放入陣列中
getking($monkeys , $m); //呼叫函式
?>
本文標題: php實現約瑟夫問題的方法小結
本文位址: http:/wangluo/php/121318.html
用PHP實現丟手帕問題(約瑟夫問題)
問題描述 有n個人圍成一圈,然後從任意指定的乙個 人那裡為起點,以m個人為單位,每轉m個人第m個人被殺死。求最後不會被殺死的人。遺留問題 在此用php做簡單的實現,php中對遞迴有100次的深度限制,所以在此不用遞迴,用迴圈 php中處理陣列的函式比較多,所以採用順序表 陣列 順序表刪除元素比較複雜...
約瑟夫問題的實現
約瑟夫問題的實現 2000 ms 65535 kb 2816 8761 n個人圍成乙個圈,每個人分別標註為1 2 n,要求從1號從1開始報數,報到k的人出圈,接著下乙個人又從1開始報數,如此迴圈,直到只剩最後乙個人時,該人即為勝利者。例如當n 10,k 4時,依次出列的人分別為4 8 2 7 3 1...
PHP實現獲取網域名稱的方法小結
方法一 用 系統變數 複製 如下 缺點不使用傳遞過來的位址和不支援系統變數的主機 方法二 用自帶函式 複製 如下 url arr url parse url url ecgejjfcho arr url host 方法三 自己寫函式 複製 如下 function getdomain url else...