演算法與資料結構實踐 走迷宮

2021-10-24 09:14:01 字數 1545 閱讀 3642

自定義乙個迷宮,行、列值》8,它有乙個出口和乙個入口,先輸出迷宮圖形,然後找出一條從入口到出口的路徑(上下左右四個方向)。分別用棧和佇列求解問題。

這題我用 stl 寫了 bfs 和 dfs,ac**如下:

//2、走迷宮:自定義乙個迷宮,行、列值》8,它有乙個出口和乙個入口,先輸出迷宮圖形,然後找出一條從入口到出口的路徑(上下左右四個方向)。分別用棧和佇列求解問題。

//『#』代表障礙,'.'代表通路,'s'代表起點,'e'代表終點

#include

using

namespace std;

typedef

long

long ll;

const

int n=

505;

char g[n]

[n];

//存圖

int n,m;

//迷宮的大小

int vis1[n]

[n],vis2[n]

[n];

int step1[n]

[n],step2[n]

[n];

//存步數

mapint,

int>

,pair<

int,

int>>pre;

//儲存前驅結點

int mo[4]

[2]=

;int s1,s2,e1,e2;

//起點座標,終點座標

struct node

;void

print

(pair<

int,

int>a)

else

print

(pre[a]);

printf

("(%d,%d)\n"

,a.first,a.second);}

void

bfs())

;return;}

for(

int i=

0;i<

4;i++)]

=;q.

push

(b);}}

}}void

dfs())

;return;}

int flag=0;

for(

int i=

0;i<

4;i++)]

=;s.

push

(b);

flag=1;

break;}

}if(!flag) s.

pop();

}}intmain()

}bfs()

;dfs()

;}/*10 10

s#########

..........

#########.

..........

.#########

..........

#########.

..........

.#########

.........e

*/

資料結構之棧與佇列 走迷宮

time limit 1000 ms memory limit 65536 kib submit statistic discuss problem description 乙個由n m 個格仔組成的迷宮,起點是 1,1 終點是 n,m 每次可以向上下左右四個方向任意走一步,並且有些格仔是不能走動,...

資料結構 queue佇列應用(走迷宮)

思路 從乙個節點開始,尋找所有下乙個能繼續走的點,根據下乙個的點繼續尋找所有能走的點,直到該點等於出口。方法 建立乙個空佇列,將起點位置進隊。在佇列不為空的時候迴圈 出隊一次。如果當前位置為出口,則結束演算法 否則找出當前方塊的4個相鄰方塊中可走的方塊,加入佇列。和stack的優勢 第乙個出隊的終點...

資料結構實驗之棧與佇列十 走迷宮

time limit 1000ms memory limit 65536kb submit statistic problem description 乙個由n m 個格仔組成的迷宮,起點是 1,1 終點是 n,m 每次可以向上下左右四個方向任意走一步,並且有些格仔是不能走動,求從起點到終點經過每個...