約瑟夫環是這樣的描述:有n個孩子圍坐成一圈,編號為0~n-1。現在讓這些孩子報數,從0~m-1依次報數。報到m-1的孩子退出圈。求最後留在圈裡的孩子。
下面直接看這個問題的數學解法:
上面的數學推到已經完成了,所以**實現:
//n代表有多少人在玩這個遊戲注意這種演算法中每個人的編號不是一成不變的,每淘汰乙個人,都要把這個人的下乙個人當成是0號位置,對所有的人重新編號。//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;
}
約瑟夫問題 約瑟夫環
約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...
約瑟夫問題 約瑟夫環
約瑟夫問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也...
約瑟夫環問題
約瑟夫環問題 問題描述 編號是1,2,n的n個人按照順時針方向圍坐一圈,每個人持有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個人開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下乙個人開始重新從1報數,如此下去,直到所有人...