學習 3 4 1約瑟夫問題

2021-05-21 11:46:48 字數 567 閱讀 2048

約瑟夫問題的來歷

這是17世紀的法國數學家加斯帕在《數目的遊戲問題》中講的乙個故事:15個教徒和15 個非教徒在深海上遇險,必須將一半的人投入海中,其餘的人才能倖免於難,於是想了乙個辦法:30個人圍成一圓圈,從第乙個人開始依次報數,每數到第九個人就將他扔入大海,如此迴圈進行直到僅餘15個人為止。問怎樣排法,才能使每次投入大海的都是非教徒。

書上的問題:設有n個人坐在圓桌周圍,從第s個人開始報數,數到m的人出列,然後再從下乙個人開始報數,數到m的人又出列,如此反覆,知道所有人出列,求每人出列的順序?

實現方法:用雙向迴圈鍊錶代表n個人圍成一圈,每出局乙個人,就把這個人代表的結點刪除,等到剩下最後乙個人時,直接讓最後乙個人出局。

我剛開始是用單向鍊錶的,但發現當元素個數很少時,刪除元素時很不方便(指標要指向待刪除元素的前乙個結點,到後來找不到這樣的節點了,就刪除不了了!eg.當我刪除第乙個結點時,就必須保留頭結點head,這就給後面的節點遍歷帶來麻煩,因為要跳過head,所以就有很多if...else...),極易出錯!

約瑟夫演算法.cpp

main.cpp

約瑟夫問題 約瑟夫環

約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...

約瑟夫問題 約瑟夫環

約瑟夫問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也...

約瑟夫問題

這是17世紀的法國數學家加斯帕在 數目的遊戲問題 中講的乙個故事 15個教徒和15 個非教徒在深海上遇險,必須將一半的人投入海中,其餘的人才能倖免於難,於是想了乙個辦法 30個人圍成一圓圈,從第乙個人開始依次報數,每數到第九個人就將他扔入大海,如此迴圈進行直到僅餘15個人為止。問怎樣排法,才能使每次...