AcWing 1076 迷宮問題

2022-06-21 12:06:08 字數 739 閱讀 4273

原題鏈結

考察:bfs

錯誤思路:

定義結構體node,用node裡vector記錄路徑.

此思路會tle,當n很大時,每次賦值都要消耗一定時間.

正確思路:

用陣列記錄路徑,即用pii 陣列記錄到達該點的上一步的座標.到時候再迭代即可.

注意:當迭代的時候,不要重新定義pii it!!!!!

最最注意:如果取單個座標迭代,x y 是時刻在改變的!!!!!

1 #include 2 #include 3 #include 4

using

namespace

std;

5const

int n = 1010

;6 typedef pairpii;

7int n,xx[4] = ,yy[4]=;

8bool

mp[n][n];

9pii pre[n][n];

10void bfs(int x,int

y)11

);14 pre[x][y] = ;

15while

(q.size())16;

27q.push();28}

29}30}

31}

32int

main()

3347

return0;

48 }

AcWing 1076 迷宮問題

題目描述 給定乙個 n n 的二維陣列,如下所示 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。資料保證至少存在一條從左上角走到右下角的路徑。輸入格式 第一行包含整數 n。接下來 n 行,每...

AcWing 1076 迷宮問題

題目傳送門 練習使用廣度優先搜尋時,記錄路徑的辦法,可以採用倒序的廣度優先搜尋,也可以採用正序的廣度優先搜尋,但倒序的 簡單些,正序的麻煩些。include using namespace std 邊權為1的時候,可以使用bfs求最短路徑 學習 bfs中如何記錄路徑,就是把bool st n n 修...

AcWing 1076 迷宮問題 BFS 最短路

題目描述 給定乙個 n n 的二維陣列,如下所示 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。資料保證至少存在一條從左上角走到右下角的路徑。輸入格式 第一行包含整數 n。接下來 n 行,每...