n個人圍成一圈,從第乙個人開始報數,數到 m的人出列,
再由下乙個人重新從 1開始報數,數到 m的人再出圈,依次類推,直到所有的人都出圈,請輸出依次出圈人的編號。
輸入兩個整數 n,m。
輸出一行 n個整數,按順序輸出每個出圈人的編號。
輸入 #1
10 3
輸出 #1
3 6 9 2 7 1 8 5 10 4
1 #include2 #include3using
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個人為止。問怎樣排法,才能使每次...