分治算法(漢諾塔問題)

一. 算法介紹:

分治算法隶糕,其實(shí)就是把一個(gè)大問題看成若干個(gè)小問題奕扣,解決了所有的小問題,那么大問題就解決了待诅,原問題的解就是子問題解的合并孙援,之前說的歸并排序害淤、快速排序,都用到了分治思想拓售。

二. 分治算法的基本步驟:

  • 分解:將原問題分解成若干個(gè)相互獨(dú)立的窥摄、規(guī)模較小的、容易求解的础淤、與原問題形式相同的子問題崭放;

  • 解決:直接求解子問題或者遞歸求解子問題哨苛;

  • 合并:將各個(gè)子問題的解合并為原問題的解。

三. 分治算法經(jīng)典應(yīng)用:漢諾塔問題

1. 漢諾塔問題介紹:

漢諾塔
漢諾塔問題介紹

2. 怎么玩币砂?

玩法

3. 思路分析:

我們先給3根針標(biāo)上號(hào)建峭,左邊的是A,中間的是B决摧,右邊的是C亿蒸。

  • 假如只有一個(gè)盤,那就直接從A移動(dòng)到C蜜徽;

  • 假如有兩個(gè)盤祝懂,那就把上面那個(gè)從A移動(dòng)到B,把底下那個(gè)從A到C拘鞋,再把B中的移到C砚蓬;

  • 假如有多個(gè)盤,我們也可以按照兩個(gè)盤的方式處理盆色。即把最下邊的看成一個(gè)盤灰蛙,其他所有的看成一個(gè)盤;當(dāng)然這里其他所有的還可以按照這種方式再進(jìn)行分治隔躲。

4. 代碼實(shí)現(xiàn):

public class HanoiTower {
    
    /**
     * 漢諾塔問題
     * @param plateNum 盤子的數(shù)量
     * @param a 出發(fā)地摩梧,初始的時(shí)候是A
     * @param b 中轉(zhuǎn)地,初始的時(shí)候是B
     * @param c 目的地宣旱,初始的時(shí)候是C
     */
    public static void hanoiTower(int plateNum, String a, String b, String c) {
        if (plateNum == 1) {
            System.out.println("從 " + a + " 到 " + c);
        } else { // 盤子數(shù)量大于等于2的情況
            // 上面的從A到B
            hanoiTower(plateNum - 1, a, c, b);
            // 最下面那個(gè)從A到C
            System.out.println("從 " + a + " 到 " + c);
            // B針上的所有搬到C
            hanoiTower(plateNum - 1, b, a, c);
        }
    }
    
    public static void main(String[] args) {
        hanoiTower(5, "A", "B", "C");
    }

}

怎么驗(yàn)證對(duì)不對(duì)呢仅父?打開4399或者7k7k,搜索漢諾塔浑吟,選擇盤子的數(shù)量笙纤,運(yùn)行代碼,按照代碼打印的結(jié)果去玩這個(gè)游戲组力,就知道對(duì)不對(duì)了省容。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市燎字,隨后出現(xiàn)的幾起案子腥椒,更是在濱河造成了極大的恐慌,老刑警劉巖候衍,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笼蛛,死亡現(xiàn)場離奇詭異,居然都是意外死亡蛉鹿,警方通過查閱死者的電腦和手機(jī)伐弹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惨好,你說我怎么就攤上這事煌茴。” “怎么了日川?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蔓腐,是天一觀的道長。 經(jīng)常有香客問我龄句,道長回论,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任分歇,我火速辦了婚禮傀蓉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘职抡。我一直安慰自己葬燎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布缚甩。 她就那樣靜靜地躺著谱净,像睡著了一般。 火紅的嫁衣襯著肌膚如雪擅威。 梳的紋絲不亂的頭發(fā)上壕探,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音郊丛,去河邊找鬼李请。 笑死,一個(gè)胖子當(dāng)著我的面吹牛厉熟,可吹牛的內(nèi)容都是我干的导盅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼庆猫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绅络?” 一聲冷哼從身側(cè)響起月培,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎恩急,沒想到半個(gè)月后杉畜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衷恭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年此叠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片随珠。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡灭袁,死狀恐怖猬错,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茸歧,我是刑警寧澤倦炒,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站软瞎,受9級(jí)特大地震影響逢唤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涤浇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一鳖藕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧只锭,春花似錦著恩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至铺呵,卻和暖如春裹驰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背片挂。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工幻林, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人音念。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓沪饺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闷愤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子整葡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

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