BFS 迷宫的最短路径
来源:互联网 发布:js select2默认不选中 编辑:程序博客网 时间:2024/05/16 06:45
scanf是我用过最恶心的输入,没有之一
#include <cstdio>#include <queue>#include <iostream>using namespace std;const int INF = 0x3f3f3f3f;int N, M;typedef pair<int, int> P;int sx, sy;int gx, gy;char Lu[1000][1000];int Hui[1000][1000];int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};int bfs(){queue<P> que;for (int i = 1; i <= N; i++)for (int j = 1; j <= M; j++)Hui[i][j] = INF;que.push(P(sx, sy));Hui[sx][sy] = 0;while (que.size()){P p = que.front();que.pop();if (p.first == gx && p.second == gy)break;for (int i = 0; i < 4; i++){int nx = p.first + dx[i], ny = p.second + dy[i];if (nx >= 1 && nx <= N && ny >= 1 && ny <= M && Lu[nx][ny] != '#' && Hui[nx][ny] == INF){que.push(P(nx, ny));Hui[nx][ny] = Hui[p.first][p.second] + 1;}}}return Hui[gx][gy];}int main(){scanf("%d %d", &N, &M);scanf("%*c");for (int i = 1; i <= N; i++){for (int j = 1; j <= M; j++)scanf("%c", &Lu[i][j]);scanf("%*c");}for (int i = 1; i <= N; i++)for (int j = 1; j <= M; j++){if (Lu[i][j] == 'S'){sx = i;sy = j;}if (Lu[i][j] == 'G'){gx = i;gy = j;}}int Yi = bfs();printf("%d\n", Yi);return 0;}
0 0
- BFS 迷宫的最短路径问题
- BFS:迷宫的最短路径
- BFS求迷宫的最短路径
- BFS 模板 【迷宫的最短路径】
- 迷宫的最短路径 -- BFS
- BFS 迷宫的最短路径
- 迷宫的最短路径 (BFS)
- 迷宫的最短路径(bfs)
- BFS 迷宫的最短路径
- 迷宫的最短路径 bfs
- 迷宫的最短路径-BFS算法
- 迷宫最短路径(bfs)
- BFS 迷宫最短路径
- 迷宫的最短路径(BFS的简单应用)
- ACM-迷宫的最短路径(bfs版)
- 迷宫的最短路径之BFS算法
- 搜索入门(BFS)迷宫的最短路径
- 迷宫的最短路径(深度bfs)
- OPENSSL初识
- eclipse断点调试无效
- 小程序--计算器demo
- docker 搭建LNMP环境
- 运算符
- BFS 迷宫的最短路径
- gsp页面
- 将两个文件里的数据相加,保存到另一个文件里
- canvas的width和height属性的特殊之处
- 《30天自制操作系统》中的细节
- LeetCode #116 - Populating Next Right Pointers in Each Node - Medium
- (简单递归)HDU2048神、上帝以及老天爷
- Android 点击Button获取验证码倒计时效果
- AdMob(app内嵌广告)iOS 9 注意事项