ACM BFS 寬搜列印最短路徑

2021-09-17 03:38:38 字數 1137 閱讀 4801

題目是 這篇部落格的題目。我就不在這裡寫了,字太多、懶得打了。

就是乙個簡單的迷宮、輸出最短路徑。

解題思路:

用乙個二維pair陣列來儲存走出迷宮的路徑,陣列的下標是對應每個點的下標,對應的內容是其父親結點的位置,在深搜的過程中,只需要把父親結點記錄上、到最後找到終點、直接輸出就好啦!!

**如下:

#include#include#include#define maxn 101

using namespace std;

typedef pairloc; //記錄座標

char map[maxn][maxn];

int n,m;

int sx,sy,ex,ey;

bool book[maxn][maxn]=;

int next[4][2]=,,,};

queueque;

loc path[maxn][maxn]; //儲存路徑

//儲存父親結點的位置

void input()

}void output()

cout << "******************************\n";

for(int j=i-2;j>=0;j--)

cout << "(" << num[j][0]+1 << " , " << num[j][1]+1 << ")\n";

cout << "(" << ex+1 << " , " << ey+1 << ")\n";

cout << i << endl;

}void bfs()

}if(flag)

break;

} }int main()

/*10 10

#s######.#

......#..#

.#.##.##.#

.#........

##.##.####

....#....#

.#######.#

.........g

.####.###.

....#....#

*/

深搜之最短路徑問題

從起點走到終點的迷宮 若求所走的步數,則先設定 int min1 0x3f 需構造兩個二維陣列,乙個用來儲存地圖,另乙個用來是否已走過 注意入dfs前與出dfs前狀態相同,即注意回溯 關鍵是上下左右四個方向移動,樸素寫法為 include using namespace std int h,l,q ...

最短路徑與搜尋之列印路徑

本篇將彙總floyd,spfa,bfs dfs 以及01揹包 的路徑列印思想及 實現,是較為冷門的acm題目考點,但其中的思想要求每個程式設計師掌握 咳咳.雖然我也剛剛學會.floyd演算法是最基礎的最短路徑演算法,因此優先講解 此篇將預設各位讀者已了解相應演算法原理,故只解釋列印路徑的 inclu...

Codeup最短路徑 最短路徑

n個城市,標號從0到n 1,m條道路,第k條道路 k從0開始 的長度為2 k,求編號為0的城市到其他城市的最短距離。第一行兩個正整數n 2 n 100 m m 500 表示有n個城市,m條道路,接下來m行兩個整數,表示相連的兩個城市的編號。n 1行,表示0號城市到其他城市的最短路,如果無法到達,輸出...