• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            回溯算法的經(jīng)典例題。大一的時(shí)候就有耳聞,卻一直沒(méi)有實(shí)現(xiàn),今天終于有機(jī)會(huì)把它寫出來(lái),小有成就感啊。
            這里算法采用的是深度優(yōu)先搜索,從第一個(gè)節(jié)點(diǎn)開(kāi)始,按行優(yōu)先的原則逐個(gè)掃描每個(gè)點(diǎn),如果該點(diǎn)合法,可以選擇放一個(gè)queen也可以選擇不放,當(dāng)該點(diǎn)不合法時(shí),就跳過(guò)該點(diǎn)接著判斷下一個(gè)點(diǎn)。
            有人把回溯算法說(shuō)成是“萬(wàn)能算法”,這么說(shuō)的原因是回溯實(shí)際上就是枚舉,它的最壞情況始終是指數(shù)或階乘級(jí)的。對(duì)它的優(yōu)化主要體現(xiàn)在約“約束函數(shù)”和“限界函數(shù)”這兩個(gè)剪枝函數(shù)上。
            我曾經(jīng)嘗試用回溯寫過(guò)背包,結(jié)果是無(wú)情的超時(shí),與動(dòng)態(tài)規(guī)劃的O(NV)來(lái)說(shuō),回溯O(2^N)的時(shí)間復(fù)雜度真是不敢恭維。因此對(duì)回溯有些“偏見(jiàn)”。但是前面說(shuō)過(guò)了,回溯的剪枝是很重要的,剪枝函數(shù)做的好可以在實(shí)際中大大降低回溯的時(shí)間復(fù)雜度。
            下面是我八皇后問(wèn)題的代碼:

            看了書上的代碼才發(fā)現(xiàn)自己寫的效率不高。上面我寫的是從棋盤的第一個(gè)位置開(kāi)始,依次判每一個(gè)位置。事實(shí)上,只要這一行有皇后,該行的其余地方就不能放了,我之前的做法無(wú)疑增加了分支個(gè)數(shù)。還有,我的限界函數(shù)寫的太沒(méi)技術(shù)含量,看完書上利用斜率寫限界函數(shù)時(shí),真是感覺(jué)很慚愧啊。
            以下是書上的經(jīng)典算法,可與上面的算法對(duì)比一下,效率差距很明顯。

             

            posted on 2012-05-11 20:24 小鼠標(biāo) 閱讀(406) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 回溯
            <2012年2月>
            2930311234
            567891011
            12131415161718
            19202122232425
            26272829123
            45678910

            常用鏈接

            隨筆分類(111)

            隨筆檔案(127)

            friends

            最新評(píng)論

            • 1.?re: 線段樹
            • 是這個(gè)樣子的,所以在OJ有時(shí)候“卡住”了也不要太灰心,沒(méi)準(zhǔn)真的不是自己的原因呢。
              加油,祝你好運(yùn)啦!
            • --小鼠標(biāo)
            • 2.?re: 線段樹
            • 對(duì)于編程競(jìng)賽來(lái)說(shuō),Java所需時(shí)間一般為C/C++的兩倍。合理的競(jìng)賽給Java的時(shí)間限制是給C/C++的兩倍。
            • --傷心的筆
            • 3.?re: poj1273--網(wǎng)絡(luò)流
            • 過(guò)來(lái)看看你。
            • --achiberx
            • 4.?re: (轉(zhuǎn))ubuntu11.10無(wú)法啟動(dòng)無(wú)線網(wǎng)絡(luò)的解決方法
            • 膜拜大神。。查了一個(gè)下午資料終于在這里解決了問(wèn)題。。神牛說(shuō)的區(qū)域賽難道是ACM區(qū)域賽。。?
            • --Hang
            • 5.?re: 快速排序、線性時(shí)間選擇
            • 博主,謝謝你的文章。你的方法可以很好的處理分區(qū)基準(zhǔn)在數(shù)組中重復(fù)的情況,書上的方法遇到這種輸入會(huì)堆棧溢出。書上給出了解釋但給的方法貌似不簡(jiǎn)潔。
            • --lsxqw2004

            閱讀排行榜

            亚洲精品乱码久久久久久久久久久久| 久久无码AV一区二区三区| 久久丫精品国产亚洲av| 国产精品对白刺激久久久| 国内精品久久久久久久97牛牛| 久久国产精品久久国产精品| 伊人久久大香线蕉精品| 国产免费久久精品99re丫y| 国产精品视频久久久| 欧美久久久久久精选9999| 亚洲精品乱码久久久久66| 久久久久噜噜噜亚洲熟女综合| 欧美黑人激情性久久| 国产精品丝袜久久久久久不卡| 2020国产成人久久精品 | 97久久精品人人做人人爽| 久久这里都是精品| 久久综合久久综合久久| 亚洲AV无码久久精品狠狠爱浪潮| 久久国产乱子精品免费女| 久久99久国产麻精品66| 久久久久久无码国产精品中文字幕| 久久久久亚洲精品天堂| 香蕉久久夜色精品国产2020| 99久久www免费人成精品| 久久精品国产精品青草| 亚洲AV无一区二区三区久久| 久久性精品| 欧美亚洲另类久久综合婷婷 | 久久久久久国产精品免费无码| 久久国产视屏| 久久精品国产亚洲Aⅴ香蕉 | 青草影院天堂男人久久| 久久91精品国产91久久小草| 久久久久人妻一区精品色| 久久久婷婷五月亚洲97号色| 久久精品国产日本波多野结衣| 久久中文字幕人妻丝袜| 亚洲精品国产美女久久久| 久久精品蜜芽亚洲国产AV| 日日噜噜夜夜狠狠久久丁香五月|