約瑟夫環問題

2021-07-02 14:51:46 字數 704 閱讀 2246

約瑟夫環是乙個數學的應用問題:已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列。

#include#includeusing namespace std;

typedef struct sdsd,*ssd;

ssd creat(int n)

return head;

}int main()

cout

p = q ;

while(q->next != q)

coutnum next->next ;

q = p->next ;

p = q;

} cout

建立迴圈鍊錶: 

模擬過程: 

1.外層while迴圈的條件是當鍊表中的元素多於乙個的時候,就進行迴圈。

2.然後內層迴圈有乙個指標p,直到找到應該踢出的節點的前乙個節點,就跳出迴圈,然後將該踢出的節點的前乙個和後乙個節點相連線。(沒有用delete)然後讓指標p指向後乙個節點,進行下一輪迴圈。

3.最後輸出剩下的最後乙個節點。

約瑟夫問題 約瑟夫環

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

約瑟夫問題 約瑟夫環

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

約瑟夫環問題

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