回溯法解決迷宮搜尋問題

2021-07-29 20:35:47 字數 884 閱讀 9450

演算法思路:定義乙個二維陣列,其中的0代表通路,1代表牆,然後定義乙個結構體表示每乙個節點的屬性,struct st //定義乙個棧,儲存路徑

然後定義乙個棧來儲存節點。

#include 

#include

#include

using

namespace

std;

//用棧實現路徑的儲存

#define maxsize 100

int mg[10][10] = ,,,

,,,,

,,

};struct st //定義乙個棧,儲存路徑

st[maxsize]; //定義棧

int top = -1; //初始化棧指標

void mgpath(int xi, int yi, int xe, int ye) //路徑為從(xi,yi)到(xe,ye)

cout

<< endl;

return;

}find = 0;

while(di<4 && find==0) //找下乙個可走方塊

if(mg[i][j]==0) find = 1; //找到通路

}if(find==1) //找到了下乙個可走方塊

else

//沒有路可走,則退棧

}cout

<< "there is no road!/n";

}int main()

回溯法 迷宮問題

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

迷宮問題 回溯法

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

回溯法求解迷宮問題

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