概念
什么是回溯法?
回溯法的基本思想:對一個包括有很多結(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)!