BFS 迷宫的最短路径
来源:互联网 发布:aloha什么软件 编辑:程序博客网 时间:2024/05/22 06:39
迷宫的最短路径
给定一个大小为N*M的迷宫。迷宫由通道和墙壁组成,每一步可以
向邻接的上下左右四个方位的通道移动,请求出从起点到终点所需的最小不熟。
此题假设一定能从起点到终点
限制条件:
N,M <=100
样例:
输入:
10 10
#S######.#
......#..#
.#.##.##.#
.#........
##.##.####
....#....#
.#######.#
....#.....
.####.###.
....#...G#
输出:
22
#include<iostream>#include<queue>#include<utility>using namespace std;int N,M; int sx,sy;//起点 int gx,gy;//终点 #define MAX_N 101#define INF 1000000char maze[MAX_N][MAX_N];//迷宫 typedef pair<int,int> p;int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};queue<p> q;int d[MAX_N][MAX_N];int bfs(){for(int i=0;i<N;i++){for(int j=0;j<M;j++){d[i][j]=INF;}}int nx,ny;q.push(p(sx,sy));d[sx][sy]=0;cout<<gx<<" "<<gy<<endl;cout<<sx<<" "<<sy<<endl;while(q.size()){p P=q.front();q.pop();if(P.first==gx&&P.second==gy){cout<<P.first<<" "<<P.second<<endl; break;}for(int i=0;i<4;i++){nx=P.first+dir[i][0];ny=P.second+dir[i][1];if(0<=nx&&nx<N&&0<=ny&&ny<M&&maze[nx][ny]!='#'&&d[nx][ny]==INF){q.push(p(nx,ny));d[nx][ny]=d[P.first][P.second]+1;} }}return d[gx][gy];}int main(){while(cin>>N>>M){for(int i=0;i<N;i++){for(int j=0;j<M;j++){cin>>maze[i][j];if(maze[i][j]=='S'){sx=i;sy=j;}if(maze[i][j]=='G'){gx=i;gy=j;}}}cout<<bfs()<<endl;}}
0 0
- BFS 迷宫的最短路径问题
- BFS:迷宫的最短路径
- BFS求迷宫的最短路径
- BFS 模板 【迷宫的最短路径】
- 迷宫的最短路径 -- BFS
- BFS 迷宫的最短路径
- 迷宫的最短路径 (BFS)
- 迷宫的最短路径(bfs)
- BFS 迷宫的最短路径
- 迷宫的最短路径 bfs
- 迷宫的最短路径-BFS算法
- 迷宫最短路径(bfs)
- BFS 迷宫最短路径
- 迷宫的最短路径(BFS的简单应用)
- ACM-迷宫的最短路径(bfs版)
- 迷宫的最短路径之BFS算法
- 搜索入门(BFS)迷宫的最短路径
- 迷宫的最短路径(深度bfs)
- 关于标准C语言的预定义宏
- ROS_RGB-D SLAM学习笔记--室内环境测试
- poj3468 A Simple Problem with Integers 基础线段树or树状数组
- const限定符最基本的
- Socket
- BFS 迷宫的最短路径
- CEF加载PPAPI插件
- 微信开发对接
- 《笨办法学Python》 第8课手记
- vim使用系统剪切板
- How to refresh materialized view in oracle
- HDOJ 2042 不容易系列之二
- std::set自定义比较函数
- Matlab 生成任意扇形区域