約瑟夫問題

2021-09-11 19:04:51 字數 671 閱讀 8138

約瑟夫問題:

約瑟夫遊戲的大意:30個遊客同乘一條船,因為嚴重超載, 加上風浪大作,危險萬分。因此船長告訴乘客,只有將全船 一半的旅客投入海中,其餘人才能倖免於難。無奈,大家只 得同意這種辦法,並議定30 個人圍成一圈,由第乙個人數起,依次報數,數到第9人,便把他投入大海中,然後再從 他的下乙個人數起,數到第9人,再將他投入大海中,如此 迴圈地進行,直到剩下 15 個遊客為止。問:哪些位置是將 被扔下大海的位置?

遞迴解法:

大致思路,假設簡化成10人

初始情況為:

0 1 2 3 4 5 6 7 8 9

扔下去乙個之後:

0 1 2 4 5 6 7 8 9

假如讓剩下的人重新組成環,為了消除原編號3的空位影響,按照,新編號=(舊編號-最大報數)%舊人數,重新編號。

原始 0 1 2 3 4 5 6 7 8 9

舊環 0 1 2 4 5 6 7 8 9

新環 6 7 8 0 1 2 3 4 5

這樣就解決了新環在數學上的不連續性

同時舊編號=(新編號+最大報數值)%舊人數

由於最開始的淘汰的編號是容易知道的,而每一輪的編號是可以由上一輪淘汰的編號得到的,所以可以用遞迴的思想,回溯到第一輪,再推出下一輪的編號。

偽**:

int ysfdg(int sum,int value,int n)

約瑟夫問題 約瑟夫環

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

約瑟夫問題 約瑟夫環

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

約瑟夫問題

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