回溯法求解迷宮問題

2022-02-23 06:31:53 字數 904 閱讀 3122

題目

這是我在老師發的ppt上發現的一道題,如下

1表示起點 7表示終點,一共六個路口,每個路口可以通達最多左上右三個路口,不能走的方向用0表示,求從1到7的路徑。

求解思路:每個路口最多有三個搜尋分支。把演算法設計為如下的搜尋過程:把整個搜尋分解為向左、向前和向右三個方向上子問題的搜尋。

當搜尋到某個路口,發現該路口沒有可搜尋的方向時,就讓搜尋過程回溯到該路口的前乙個路口,然後搜尋這個路口的其他尚未搜尋過的搜尋方向。

**:

1 #include 2

using

namespace

std;

3int ro[100];//

記錄走過的路徑

4int k=-1;//

路口數目

5int flag=1;6

int road(int a[3],int

m)12

if(a[m][i]==7)

18 flag=0;//

表示探索結束19}

20if(a[m][i]!=0)

24else27}

28 k--;//

該條路徑不行,回溯到前乙個路口

29return1;

30}31int

main()

3238

}39 road(a,0

);40

return0;

41 }

總結:該**以ppt上的迷宮而寫的,只需改一下引數便可以輕易擴充套件到一般的情況。

回溯法求解迷宮問題

最近在leetcode上看了些演算法題,有些看著很簡單的很常用的東西,竟然一下子想不出來怎麼求解,比如說 實現sqrt函式,求陣列的排列。如果高數學的不好,這些看似簡單的問題,第一次碰到也會感覺很難求解,當然了,今天要說的是這樣乙個問題,求解迷宮的所有解,這個問題的求解用到了回溯法的思想,不了解這個...

python 用回溯法求解迷宮問題

今天刷華為機試題,刷到一道迷宮問題,看了其他人提交的 發現有許多小bug不是很滿意,我這裡就用回溯法解決了這個迷宮問題,配上 講解 題目 定義乙個二維陣列n m 其中2 n 10 2 m 10 如5 5陣列下所示 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著...

回溯法 迷宮問題

1.首先我們需要自定義乙個迷宮 左上角為入口,右下角為出口,0為路,1為牆 用二維陣列儲存 2.我們在走迷宮之前,首先要確立乙個走的順序,即貪心準則,我們首先試探的方向應該是下,然後是右,上,左 為了確保每乙個格仔都有上下左右,我們需要給我們的迷宮加上一圈牆8 8,變成10 10 3.當我們在乙個格...