約瑟夫問題

2022-06-23 13:27:11 字數 746 閱讀 2066

n個人圍成一圈,從第乙個人開始報數,數到 m的人出列,

再由下乙個人重新從 1開始報數,數到 m的人再出圈,依次類推,直到所有的人都出圈,請輸出依次出圈人的編號。

輸入兩個整數 n,m。

輸出一行 n個整數,按順序輸出每個出圈人的編號。

輸入 #1

10 3

輸出 #1

3 6 9 2 7 1 8 5 10 4

1 #include2 #include3

using

namespace

std;

4 queuea;

5int

main()

11for(int i=1;i<=n;i++)

14while(a.size()!=1

)19 cout<'';

20a.pop();21}

22 cout<23return0;

24 }

用佇列來解決約瑟夫問題

就是先把這些編號入隊

然後把第一位添在佇列最後,然後把第一位刪掉,這就相當於報了一次數

然後重複這個

假如一共要報n次,那就重複這個n-1次

然後第n次的時候,不往佇列後新增了,直接刪掉最前面的那個,這就是那個被殺死的

然後繼續

我感覺用佇列的話,還是挺方便的;

約瑟夫問題 約瑟夫環

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

約瑟夫問題 約瑟夫環

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

約瑟夫問題

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