約瑟夫問題

2022-04-01 07:18:18 字數 683 閱讀 2707

約瑟夫問題原型: 0~n-1 n 個數,從 0 開始,每數 k 個數,刪除乙個,最後留下來的數是多少。

題意: 1~n 個數,第一次刪掉 m ,每隔 k 個數刪掉乙個,最後留下來的數是多少。

分析: 

約瑟夫原型: 設從 0 開始 每k 個數刪掉乙個,最後留下的是 f(n);

則有遞推公式 f(n) = (f(n-1) + k)% n;

理由:

第一次刪掉 4 ,那麼如果沒有了,只可能是旁邊的 5 (每次都重新排序了,第二個圖);

那麼本題是,1~n ,第一次刪掉的是 m,而不像原型裡面要數,一上來就刪,則起點就是 m+ 1-k,答案 f(n) + m + 1-k;

#include using

namespace

std;

const

int maxn = 10000 + 5

;int

f[maxn];

intmain()

int ans = (m+1+f[n]-k) %n;

if(ans<=0) ans+=n;

printf(

"%d\n

",ans);

}return0;

}

約瑟夫問題 約瑟夫環

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

約瑟夫問題 約瑟夫環

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

約瑟夫問題

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