約瑟夫環問題

2021-10-04 23:47:37 字數 540 閱讀 6266

將約瑟夫環中的每個人看作陣列的元素,f為倖存者的下標

先考慮從編號為1的開始報數的情況,f為n,m的函式。設報到m的人出隊,總人數為n

遞推公式為:

推導過程:

約瑟夫環問題的進行過程可看成陣列的移動,以n=11,m=3為例:

進行過程為:

從上圖可看出,約瑟夫環問題進行的過程為陣列的迴圈移動,在每次刪除元素的過程中,陣列中的元素迴圈左移m位。從下往上看即為迴圈右移m位,對於移出的情況,取模即可。

f的初始值為f(1,3)=0

對於從編號為k的人開始報數的情況,相當於最開始就把陣列元素左移了k-1位,輸出結果時右移k-1位還原即可

#include

intmain()

約瑟夫問題 約瑟夫環

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

約瑟夫問題 約瑟夫環

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

約瑟夫環問題

約瑟夫環問題 問題描述 編號是1,2,n的n個人按照順時針方向圍坐一圈,每個人持有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個人開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下乙個人開始重新從1報數,如此下去,直到所有人...