回溯法以及迷宮問題

概念

什么是回溯法?

回溯法的基本思想:對一個包括有很多結(jié)點(diǎn),每一個結(jié)點(diǎn)有若干個搜索分支的問題,把原問題分解為對若干個子問題求解的算法。

我們簡單分析一下這句話,其實(shí)就是當(dāng)搜索到某個結(jié)點(diǎn),發(fā)現(xiàn)無法再繼續(xù)搜索下去的時候,就讓搜索過程回溯(也稱退回)到該結(jié)點(diǎn)的上一個結(jié)點(diǎn)繼續(xù)搜索這個結(jié)點(diǎn)的其他尚未搜索過的分支,然后一遍一遍重復(fù)這個步驟,直到搜索到問題的解或搜索完了全部可搜索分支沒有解存在為止

迷宮問題

說到回溯法,就不得不說使用回溯思想最經(jīng)典的一個問題:迷宮問題。

我們規(guī)定:2 為墻壁 0為道路 由圖可見,我們有4種不同的通路。?

我們設(shè)置入口為(1,1)出口為(7,7)

①. 我們在主方法里先初始化一個迷宮,用二維數(shù)組來實(shí)現(xiàn)。

②. 我們定義四個成員變量,并且設(shè)置入口出口坐標(biāo)

③. 實(shí)現(xiàn)我們迷宮通路的算法,在尋找下一個通路點(diǎn)時,我們就用到了回溯的思想。

完整的實(shí)現(xiàn)代碼!

總結(jié)

多練還是最好的途徑,迷宮是一個很典型的問題,大家一定要多多理解其中的思路!

下一講我們就要介紹樹的相關(guān)知識啦 :)

PS:有什么問題或者不解的地方可以評論,我都會一一就行回復(fù)的,如果有錯誤或者言語不明的地方,還請大神多多指點(diǎn)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 回溯法與分支限界法 時間 2016-03-24 標(biāo)簽 搜索 回溯法 1、概念 回溯算法實(shí)際上一個類似枚舉的搜索嘗...
    wangchuang2017閱讀 2,356評論 0 4
  • B樹的定義 一棵m階的B樹滿足下列條件: 樹中每個結(jié)點(diǎn)至多有m個孩子。 除根結(jié)點(diǎn)和葉子結(jié)點(diǎn)外,其它每個結(jié)點(diǎn)至少有m...
    文檔隨手記閱讀 13,345評論 0 25
  • 一. 算法之變,結(jié)構(gòu)為宗 計算機(jī)在很多情況下被應(yīng)用于檢索數(shù)據(jù),比如航空和鐵路運(yùn)輸業(yè)的航班信息和列車時刻表的查詢,都...
    Leesper閱讀 7,006評論 13 42
  • 紀(jì)實(shí)生活 體悟人生 很久以前 就聽聞新浪博客 是做得相當(dāng)不錯的博客網(wǎng)站 早在2011年的時候 就開始玩新浪博客了 ...
    木風(fēng)恒閱讀 294評論 0 0
  • 從一個地方到另一個地方 從意識清醒到逐漸模糊:搖搖晃晃 我們都不勝酒力,卻毫不吝嗇身體與時光 你訴說著過往,像個滿...
    年少如初閱讀 189評論 0 2