演算法詳解 約瑟夫問題

2021-06-20 01:52:43 字數 431 閱讀 8539

約瑟夫(josephus)問題(也成為約瑟夫置換),也成為約瑟夫環。

n個人圍成一圈(編號1、2、3、...、n),這些人輪流數數(從編號為1的人開始,從1開始數),當數到m的人就會被處決;接著,後面的人再從繼續從1開始數數;如下下去,知道最後只剩下乙個人為止。問題是給定了n和m,一開始要找到什麼位置才能避免被處決?

下面使用圖示闡述josephus問題:

如下圖,加入有a、b、c、d、e共5個人,m=3;

第一輪:從a開始數數,a數1,被處決的是c

第二輪:從d開始數數,d數1,被處決的是a

第三輪:從b開始數數,b數1,被處決的是e

第四輪:從b開始數數,b數1,被處決的是b,此時只剩下d,結束

詳解約瑟夫環問題 C C

約瑟夫問題 n個人圍坐成一圈,從1開始順序編號 遊戲開始,從第乙個人開始由1到m迴圈報數,報到m的人退出圈外,問最後剩下的那個人原來的序號。問題分析 面對這樣迴圈報數的資料,我們最容易想到的就是用陣列進行報數的模擬,最後把存活的人的編號輸出。先貼上這種思路的 1 include2 include3 ...

Joseph Problem(解約瑟夫問題)

今天在乙個oj上做了乙個joseph problem 解約瑟夫問題 的題,題目不難,直接用迴圈鍊錶模擬實際操作即可完成,但是用此種方法的時間太長,超時,所以我就用了乙個大家對這類問題比較常用的解法 數學方法。題目內容 實作joseph problem.假設一開始有n個人,編號1 n,按照順序以順時針...

理解 約瑟夫環

總結了個小經驗,有時候光靠看是看不出什麼端倪來的,還必須得動下筆,比劃比劃也許就那麼簡單 include include typedef struct node node node creatlist int n 建立乙個含 n個人的迴圈鍊錶 p next head 構建迴圈鍊錶 return he...