約瑟夫問題

2021-08-19 00:19:19 字數 423 閱讀 8820

設有n個人排成一圈,其編號1~n,,從編號為1的人開始報數,按順時針「1,2,3,4」迴圈報數,數到m的人出列,然後出列者的下乙個人開始重新報數,數到m的人又出列,如此反覆迴圈,直到n個人都出列為止。要求輸出n個人的出列順序

例如,有8個人的初始序列1 2 3 4 5 6 7 8 ,則出列順序4 8 5 2  1 3 7 6

分析:採用容器array存人的編號,設人的編號放到從1放到n,每次數到m的人出列,下標t=(t+m)%i的人出列(t初始值設為0,i表示目前佇列中還剩的人數),編號是的人出列後,t後面緊跟的人補到t的位置,後面的依次補上,重新形成乙個環形佇列,中間不空。然後,緊接上次輪到的位置開始報號.......

void josepbus(int n,int m)

printf("\n");

}

約瑟夫問題 約瑟夫環

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

約瑟夫問題 約瑟夫環

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

約瑟夫問題

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