BFS(模板)
struct node{
int x,y,step;
}Node;
node S,E;
int n, m;
char maze[maxn][maxn];
bool flag[maxn][maxn];
int X[4] = {0,0,1,-1};
int Y[4] = {1,-1,0,0};
bool judge(int x, int y){
if(x >= n || x < 0 || y >= m || y < 0){//邊界約束
return false;
}
if(maze[x][y] == '#' || flag[x][y] == true){//沒碰壁且未被訪問過
return false;
}
return true;
}
int BFS(int x, int y){//返回值是走迷宮最短路
queue<node> Q;
Node.x = x, Node.y = y;
Q.push(Node);
flag[x][y] = true;
while(!Q.empty()){
node top = Q.front();
Q.pop();
if(top.x == E.x && top.y == E.y){
return top.step;
}
for(int i = 0; i < 4; i++){//判斷隊首元素相鄰元素
int tx = top.x + X[i];
int ty = top.y + Y[i];
if(judge(tx,ty)){
Node.x = tx;
Node.y = ty;
Node.step = top.step+1; //記錄層數
Q.push(Node);
flag[tx][ty] = true;
}
}
}return -1;//無法到達終點
}
相關文章
- bfs
- 01BFS
- Count BFS Graph
- poj 3278 BFS
- DAG bfs + dfs 126,
- 【BFS】poj 3414 Pots
- BFS入門筆記筆記
- BFS和Dijkstra結合
- 找朋友(bfs常錯!!)
- 【BFS】腐爛的橘子
- BFS/acm習題集ACM
- POJ3414 Pots【BFS】
- UVA11624 Fire!【BFS】
- BFS演算法原理演算法
- 藍橋杯-長草(BFS)
- C++演算法——BFSC++演算法
- HDU2612 Find a way【BFS】
- 藍橋杯-走迷宮(BFS)
- [LeetCode] 最短的橋 雙BFS JavaLeetCodeJava
- 聊聊演算法——BFS和DFS演算法
- Gym - 101875L PC is for kicking【bfs】
- bfs廣度優先搜尋
- cf1072D. Minimum path(BFS)
- HDU1495 非常可樂【BFS】
- 求樹的直徑(BFS/DFS)
- P1032 字串變換(bfs)字串
- 藍橋杯-迷宮(BFS+DFS)
- 【ybtoj】【BFS】【例題1】走迷宮
- FZU2150 Fire Game【BFS+暴力】GAM
- POJ3984 迷宮問題【BFS】
- cf1064D. Labyrinth(01BFS)
- nyoj - 1154. 找食物(簡單BFS)
- Cow Marathon(BFS求數的直徑)
- L2-006 樹的遍歷(BFS)
- Prime Path(POJ - 3126)【BFS+篩素數】
- 帶你學習BFS最小步數模型模型
- CF995E Number Clicker (雙向BFS)
- 速記圖的遍歷(DFS和BFS)