資料結構 棧實現迷宮尋路問題

2021-07-22 15:53:00 字數 1922 閱讀 9336

思路:

解決迷宮求解的問題,從入口出發,順某一方向向前探索,若能走通,則繼續往前走;否則沿原路退回,換乙個方向再繼續探索,直至所有可能的通路都探索到為止。為了保證在任何位置上都能沿原路退回,所以需要用乙個後進先出的結構來儲存從入口到當前位置的路徑。因此,在求迷宮通路的演算法

**塊maze.h

#define _crt_secure_no_warnings 1

#include#include #include #include using namespace std;

#define n 10

struct pos

;stack minstack;

void getmaze(int arr[n],int size)

for (int i = 0; i < size; ++i)

if (ch == '1' || ch == '0')

} }fclose(f);

}bool checkisaccess(int arr[n],pos next)

else }

void printmaze(int arr[n],int size)

} //上

next._row -= 1;

if (checkisaccess(arr, next))

next = cur;

//下next._row += 1;

if (checkisaccess(arr, next))

next = cur;

//左next._col -= 1;

if (checkisaccess(arr, next))

next = cur;

//右next._col += 1;

if (checkisaccess(arr, next))

path.pop();

} if (path.empty()) //判斷是否找完所有路徑

return true;

return false;

}

測試**塊:

#define _crt_secure_no_warnings 1

#include#include #include #include "maze.h"

using namespace std;

#define n 10

int main();

getmaze(mazemap, n);

printmaze(mazemap, n);

stackpath;

pos entry = ; //定義迷宮入口

bool ret = mazepath(mazemap,entry,path);

if (ret)

} system("pause");

return 0;

}

地**件

map.txt

1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1

0 0 0 0 0 1 1 1 1 1

1 1 0 1 0 1 1 1 1 1

1 1 0 1 0 0 0 1 1 1

1 1 0 1 1 1 0 1 1 1

1 1 0 1 1 1 0 1 1 1

1 1 0 0 1 1 0 1 1 1

1 1 1 1 1 1 0 1 1 1

1 1 1 1 1 1 0 1 1 1

執行結果圖

python迷宮尋路 迷宮尋路問題 A 演算法

迷宮尋路問題 a 演算法 迷宮尋路問題是人工智慧中的有趣問題,如何表示狀態空間和搜尋路徑是尋路問題的重點,本文的主要內容是a 搜尋演算法的理解和應用,首先對基本知識和演算法思想進行了解,再通過其對迷宮問題求解應用,編寫 python 程式進行深入學習。1.搜尋區域 我們假設某個人要從 start 點...

c資料結構 棧 迷宮問題(迴圈實現)

走迷宮步驟 使用二維陣列來表示迷宮地圖。1表示可以走,0表示不能走。設定迷宮入口。判斷迷宮入口是否合法。將入口點入棧 將當前點設定為入口點。loop 判斷是否能往左走,能則將當前點壓棧。goto loop 判斷是否能忘上走,能則將當前點壓棧。goto loop 判斷是否能往右走,能則將當前點壓棧。g...

資料結構之用棧實現迷宮問題(dfs)

給乙個n n的方格,讓你求從左上角到所給一點的任意一條路徑並輸出 該題用到dfs,以下是對dfs的簡要解析 詳解請參見 傳送門 dfs是一種用於遍歷或搜尋樹或圖的演算法。沿著樹的深度遍歷樹的節點,盡可能深的搜尋樹的分支。當節點v的所在邊都己被探尋過或者在搜尋時結點不滿足條件,搜尋將回溯到發現節點v的...