迷宫-最短路径距离-BFS
来源:互联网 发布:台湾的未来 知乎 编辑:程序博客网 时间:2024/05/17 02:43
已知条件:
迷宫地图:0-不通,1通
二维数组(N*M)
0 0 0 0 0 0 0 0
0 1 1 0 0 1 0 0
0 0 1 1 1 1 0 0
0 1 1 1 0 1 1 1
1 1 1 0 0 0 0 1
起始点:s(2,2)
求解所有可通过的点到起始点的最短距离。
算法:
#include <iostream>#include <queue>#include <fstream>#include <string>using namespace std;typedef pair<int,int> Pos;int N,M;//下、右、上、左四个方向int dx[4]={1,0,-1,0};int dy[4]={0,1,0,-1};int *src;//迷宫信息数组int *dist;//各位置到起始点的最短路径距离int sx,sy;//起始点位置 //从文件中读取迷宫地图数据void readData(){fstream in;char c;in.open("maze.txt");int k = 0; int n = 0; while(!in.eof()){in>>c;if(c == '\n' || c == ' '){ n++;}else{src[k++] = c - '0';}} in.close(); N = n; M = k/n; src = new int[N*M]; //分配迷宫数组dist = new int [N*M]; //分配距离数组}//利用BFS计算路径距离void bfs(int ex, int ey)//输入终点位置{ queue<Pos> que;int d[N][M]; //临时距离数组 for(unsigned int i = 0; i < N; i++) { for(unsigned int j = 0; j < M; j++) { d[i*N + j] = -1; } } que.push(Pos(sx,sy)); d[sx * N + sy] = 0; while(que.size()) { Pos p = que.front(); que.pop(); if(p.first == ex && p.second == ey) break; for(unsigned int i = 0; i < 4; i++) { int x = p.first + dx[i]; int y = p.second + dy[i]; if(0 <= x && x < N && 0 <= y && y < M && src[x * N + y] != 0 && d[x * N + y] == -1) { que.push(P(nx,ny)); d[x * N + y] = d[p.first*N + p.second] + 1; dist[x * N + y] = d[x * N + y]; //更新距离数组 } } }}int main(){ readData(); for(int i = 0; i < N; i++){for(int j = 0; j < N; j++){if(src[i * N + j] == 1 && dist[i * N+ j] == -1)//跳过计算过的位置 { bfs(i,j); }}} return 0;}
0 0
- 迷宫-最短路径距离-BFS
- 迷宫最短路径(bfs)
- BFS 迷宫最短路径
- BFS 迷宫的最短路径问题
- BFS:迷宫的最短路径
- BFS求迷宫的最短路径
- 小白书之迷宫最短路径bfs
- BFS求解迷宫最短路径
- BFS 模板 【迷宫的最短路径】
- 迷宫的最短路径 -- BFS
- 迷宫问题之最短路径bfs
- BFS 迷宫的最短路径
- 迷宫最短路径长度bfs
- 迷宫的最短路径 (BFS)
- bfs 迷宫输出最短路径
- 迷宫的最短路径(bfs)
- 迷宫最短路径问题-BFS
- BFS 迷宫的最短路径
- shadowsocks流量监控
- CentOS7.2装jdk7
- POJ 1862 Stripies 题解
- Python OpenCV3 VideoCapture读取视频文件失败解决方案
- scrollView滑动到底部
- 迷宫-最短路径距离-BFS
- Python 使用库ctypes调用C代码接口
- 第四次实验
- .NET Office控件套包 Spire.Office for .NET 更新
- Python内置函数清单
- SSH整合中出现sessionFactory无法创建
- mysql语句
- nodejs+npm+gulp使用详细教程
- 欢迎使用CSDN-markdown编辑器