使用php解決約瑟夫問題

2021-08-02 02:45:43 字數 760 閱讀 8619

約瑟夫問題是個有名的問題:n個人圍成一圈,從第乙個開始報數,報道第m個時序號為m的人出列,

然後序號為m+1的人開始從頭報數依此類推  報到m的人出列,問最後剩下的那個人的序號是幾

利用環形鍊錶來解決這個問題,下面是php實現的例項

/** * 利用環形鍊錶解決約瑟夫問題( * 一群孩子圍成一圈(小孩數量為n)開始數數 數到m的人出列 問最後剩下的那個孩子編號是幾) * @param $first null 鍊錶的頭 * @param $total integer 總數量 * @param $num integer 數到幾齣列的數字 * @param $mark integer 從第幾號開始數 */function childcount(&$first,$total,$num,$mark) else }//因為鍊錶的節點本身不能刪除自己,所以需要乙個始終指在頭節點後面乙個節點的指標$tail = $first;while ($tail->next!=$first)//考慮從第幾號數數 將指標移到這個數的位置上for ($i=0;$i<$mark-1;$i++)//開始數數while ($tail!=$first)//當退出for迴圈的時候說明數到了該刪除的小孩了 將其刪除$first = $first->next;$tail->next = $first;}echo '

最後留在圈圈的人的編號是'.$tail->no;}//建立頭節點$first = null;//建立環形鍊錶//create($first,4);//遍歷環形鍊錶//show($first);//解決約瑟夫問題childcount($first,4,2,4);

php解決約瑟夫問題

約瑟夫環 是乙個數學的應用問題 一群猴子排成一圈,按1,2,n依次編號。然後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去 如此不停的進行下去,直到最後只剩下乙隻猴子為止,那只猴子就叫做大王。要求程式設計模擬此過程,輸入m n,輸出最後那個大王的編號。下面列出了...

php解決約瑟夫環

今天偶遇一道演算法題 約瑟夫環 是乙個數學的應用問題 一群猴子排成一圈,按1,2,n依次編號。然後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去 如此不停的進行下去,直到最後只剩下乙隻猴子為止,那只猴子就叫做大王。要求程式設計模擬此過程,輸入m n,輸出最後那個...

php使用環形鍊錶解決約瑟夫問題完整示例

約瑟夫問題 josephu問題為 設編號為1,2,n的n個人圍坐一圈,約定編號為k 1 k n 的人從1開始報數,數到m的那個人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生乙個出隊編號的序列。並求出最後出列的人是哪個?php實現環形鍊錶以及約瑟夫問題的...