簡單迷宮問題的求解 BFS

2021-08-20 10:45:58 字數 919 閱讀 5471

描述

定義乙個二維陣列:

int maze[5][5] = ;

它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。

輸入乙個5 × 5的二維陣列,表示乙個迷宮。資料保證有唯一解。

輸出左上角到右下角的最短路徑,格式如樣例所示。

樣例輸入

0 1 0 0 0

0 1 0 1 0

0 0 0 0 0

0 1 1 1 0

0 0 0 1 0

樣例輸出

(0, 0)

(1, 0)

(2, 0)

(2, 1)

(2, 2)

(2, 3)

(2, 4)

(3, 4)

(4, 4)

#include

#include

#include

using namespace std;

int arr[5][5];

int visited[5][5];

struct nodeque[25];

int dir[4][2]=,,,};//四個方向

int head=0,tail=0;

void print(int h)

void bfs(int x,int y)

if(x==4&&y==4)

for(int t=0;t<4;t++)

que[tail].parent=head;

visited[que[tail].x ][que[tail].y]=1;

if(que[tail].x==4&&que[tail].y==4)

}head++;

if(head<=tail)

}int main()

迷宮問題求解(1) 簡單迷宮

標頭檔案 include include include include include maze.h define max 100 typedef struct position datatype typedef struct stack stack void stackinit stack s ...

寬度優先搜尋BFS,求解迷宮問題

寬度優先搜尋 bfs 也是搜尋的手段之一。它與深度優先搜尋類似,從某個狀態出發搜尋所有可達的狀態。與dfs不同的是搜尋的順序,寬度優先搜尋總是先搜尋離初始狀態近的狀態。也就是說,它是按照開始狀態 只需1次轉移就可以到達的所有狀態 只需2次轉移就可以到達的所有狀態 以這樣的順序開始搜尋,對於同乙個狀態...

蠻力法 求解迷宮問題 DFS和BFS

問題描述 有如圖8 8的迷宮 o x ooooo xoxxooox xoxxoxxo xo xooooxoo xo 其中,o表示通路方塊,x表示障礙方塊。假設入口位置為 0,0 出口為右下角方塊位置 7,7 設計乙個程式求指定入口到出口的一條迷宮路徑。分析 用n表示迷宮大小,用二維陣列maze存放迷...