約瑟夫環問題

2022-04-10 11:45:32 字數 631 閱讀 6789

約瑟夫環是這樣的描述:有n個孩子圍坐成一圈,編號為0~n-1。現在讓這些孩子報數,從0~m-1依次報數。報到m-1的孩子退出圈。求最後留在圈裡的孩子。

下面直接看這個問題的數學解法:

上面的數學推到已經完成了,所以**實現:

//n代表有多少人在玩這個遊戲

//m代表報數的範圍是0~m-1

int lastremaining_solution(unsigned int n, unsigned int m)

int s = 0;

if(n == 1)

for(int i = 2; i <= n; i++)

return s;

}

注意這種演算法中每個人的編號不是一成不變的,每淘汰乙個人,都要把這個人的下乙個人當成是0號位置,對所有的人重新編號。

約瑟夫問題 約瑟夫環

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

約瑟夫問題 約瑟夫環

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

約瑟夫環問題

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