回溯法 迷宮問題

2021-08-08 22:31:59 字數 926 閱讀 7823

1.首先我們需要自定義乙個迷宮;

左上角為入口,右下角為出口,0為路,-1為牆

用二維陣列儲存

2.我們在走迷宮之前,首先要確立乙個走的順序,即貪心準則,我們首先試探的方向應該是下,然後是右,上,左;

為了確保每乙個格仔都有上下左右,我們需要給我們的迷宮加上一圈牆8*8,變成10*10;

3.當我們在乙個格仔上時,通過遍歷格仔的4個方向,來確定能否行走,若能走,走,不能走,回。

**如下:

#include

using

namespace

std;

int h[10][10];//定義乙個迷宮

int move[4][2]=;//定義4個方向

int url[50][2]=;//定義乙個二位陣列來存放我的路徑

int top=-1;//棧頂指標

int cnt=0;//累計看有多少組解

void printm()

}}int main(void)

}h[1][1]=h[2][1]=h[2][2]=h[3][2]=h[3][3]=h[3][4]=h[3][5]=h[3][6]=h[3][7]=h[4][2]=h[4][3]=h[4][7]=0;

h[5][2]=h[5][3]=h[5][4]=h[5][5]=h[5][6]=h[5][7]=h[6][2]=h[6][6]=h[6][7]=h[7][2]=h[7][3]=h[7][6]=h[7][7]=h[8][3]=h[8][4]=h[8][5]=h[8][6]=h[8][7]=h[8][8]=0;

maze(1,1);

return

0;}

迷宮問題 回溯法

描述 給乙個20 20的迷宮 起點座標和終點座標,問從起點是否能到達終點。輸入 多個測例。輸入的第一行是乙個整數n,表示測例的個數。接下來是n個測例,每個測例佔21行,第一行四個整數x1,y1,x2,y2是起止點的位置 座標從零開始 x1,y1 是起點,x2,y2 是終點。下面20行每行20個字元,...

回溯法求解迷宮問題

題目 這是我在老師發的ppt上發現的一道題,如下 1表示起點 7表示終點,一共六個路口,每個路口可以通達最多左上右三個路口,不能走的方向用0表示,求從1到7的路徑。求解思路 每個路口最多有三個搜尋分支。把演算法設計為如下的搜尋過程 把整個搜尋分解為向左 向前和向右三個方向上子問題的搜尋。當搜尋到某個...

回溯法求解迷宮問題

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