原題鏈結
考察:bfs
錯誤思路:
定義結構體node,用node裡vector記錄路徑.
此思路會tle,當n很大時,每次賦值都要消耗一定時間.
正確思路:
用陣列記錄路徑,即用pii 陣列記錄到達該點的上一步的座標.到時候再迭代即可.
注意:當迭代的時候,不要重新定義pii it!!!!!
最最注意:如果取單個座標迭代,x y 是時刻在改變的!!!!!
1 #include 2 #include 3 #include 4using
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 行,每...