算法練習(xí)(43): 約瑟夫問題(1.3.37)

本系列博客習(xí)題來自《算法(第四版)》,算是本人的讀書筆記执赡,如果有人在讀這本書的镰踏,歡迎大家多多交流。為了方便討論沙合,本人新建了一個(gè)微信群(算法交流)奠伪,想要加入的,請(qǐng)?zhí)砑游业奈⑿盘?hào):zhujinhui207407 謝謝首懈。另外绊率,本人的個(gè)人博客 http://www.kyson.cn 也在不停的更新中,歡迎一起討論

算法(第4版)

知識(shí)點(diǎn)

  • 約瑟夫問題

題目

1.3.37 Josephus 問題究履。在這個(gè)古老的問題中滤否,N 個(gè)身陷絕境的人一致同意通過以下方式減少生存人數(shù)。他們圍坐成一圈(位置記作 0 到 N-1)并從第一個(gè)人開始報(bào)數(shù)最仑,報(bào)到 M 的人會(huì)被殺死藐俺,直到最后一個(gè)人留下來炊甲。傳說中 Josephus 找到了不會(huì)被殺死的位置。編寫一個(gè) Queue 的用例 Josephus欲芹,從命令行接受 N 和 M 并打印出人們被殺死的順序(這也將顯示 Josephus 在圈中的位置)蜜葱。


1.3.37 Josephus problem. In the Josephus problem from antiquity, N people are in dire straits and agree to the following strategy to reduce the population. They arrange them- selves in a circle (at positions numbered from 0 to N–1) and proceed around the circle, eliminating every Mth person until only one person is left. Legend has it that Josephus figured out where to sit to avoid being eliminated. Write a Queue client Josephus that takes N and M from the command line and prints out the order in which people are eliminated (and thus would show Josephus where to sit in the circle).

% java Josephus 7 2 
1 3 5 0 4 2 6

分析

本人所有簡(jiǎn)書的算法文章詳細(xì)分析已經(jīng)移入小專欄:算法四習(xí)題詳解,歡迎大家訂閱

f[1]=0;
f[i]=(f[i-1]+m)%i; (i>1)

答案

public class Josephus {

    public static void main(String[] args) {

        int m = 3;
        int N = 41;

        Queue<Integer> queue = new Queue<Integer>();
        for (int i = 0; i < N; i++)
            queue.enqueue(i);

        while (!queue.isEmpty()) {
            for (int i = 0; i < m - 1; i++)
                queue.enqueue(queue.dequeue());
            StdOut.print(queue.dequeue() + " ");
        }
        
        StdOut.println();
    }
}

打印的結(jié)果為:
2 5 8 11 14 17 20 23 26 29 32 35 38 0 4 9 13 18 22 27 31 36 40 6 12 19 25 33 39 7 16 28 37 10 24 1 21 3 34 15 30
因此耀石,第31個(gè)人是最后一個(gè)被殺死的牵囤,第16個(gè)人是倒數(shù)第二個(gè)被殺死的

代碼索引

Josephus.java

視頻講解

廣告

我的首款個(gè)人開發(fā)的APP壁紙寶貝上線了,歡迎大家下載滞伟。

壁紙寶貝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末揭鳞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子梆奈,更是在濱河造成了極大的恐慌野崇,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亩钟,死亡現(xiàn)場(chǎng)離奇詭異乓梨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)清酥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門扶镀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人焰轻,你說我怎么就攤上這事臭觉。” “怎么了辱志?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵蝠筑,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我揩懒,道長(zhǎng)什乙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任已球,我火速辦了婚禮臣镣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘和悦。我一直安慰自己退疫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布鸽素。 她就那樣靜靜地躺著,像睡著了一般亦鳞。 火紅的嫁衣襯著肌膚如雪馍忽。 梳的紋絲不亂的頭發(fā)上棒坏,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音遭笋,去河邊找鬼坝冕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瓦呼,可吹牛的內(nèi)容都是我干的喂窟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼央串,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼磨澡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起质和,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤稳摄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后饲宿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厦酬,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年瘫想,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仗阅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡国夜,死狀恐怖霹菊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情支竹,我是刑警寧澤旋廷,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站礼搁,受9級(jí)特大地震影響饶碘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜馒吴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一扎运、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饮戳,春花似錦豪治、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至歹河,卻和暖如春掩浙,著一層夾襖步出監(jiān)牢的瞬間花吟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工厨姚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留衅澈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓谬墙,卻偏偏與公主長(zhǎng)得像今布,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拭抬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容

  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,581評(píng)論 0 23
  • 這是每個(gè)人一生中都要經(jīng)歷的過程部默,然而自己真的到了這個(gè)階段,卻又覺得好多事應(yīng)接不暇玖喘,做起來力不從心甩牺。人到中年真的經(jīng)歷...
    心靈的旋律閱讀 176評(píng)論 0 0
  • 當(dāng)你對(duì)一身邊的一切都以積極樂觀的心態(tài)去對(duì)待,這是你會(huì)發(fā)現(xiàn)這種心態(tài)可以產(chǎn)生巨大的能量累奈!善于發(fā)現(xiàn)生活中的小確幸贬派,尋找或...
    crystalplane一一閱讀 579評(píng)論 0 0
  • 國(guó)慶長(zhǎng)假女兒安排到莫干山游玩,兩個(gè)女兒每家三口帶著我們老兩口共八人一起在莫干山住了三個(gè)晚上澎媒。 10月2日下午2點(diǎn)半...
    米老爹閱讀 3,633評(píng)論 55 56