小白书之迷宫最短路径bfs
来源:互联网 发布:人工智能三大定律 编辑:程序博客网 时间:2024/05/22 03:34
vis标记,以免更改了值和路径,
同时打印路径时用递归同样会有溢出的危险,改成非递归即可。
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<string>#include<cctype>#include<cmath>#include<map>#include<set>#include<vector>#include<queue>#include<stack>#define LL __int64using namespace std;const int maxn=1001;int maze[maxn][maxn],vis[maxn][maxn];int fa[maxn][maxn],dist[maxn][maxn],last_dir[maxn][maxn];char name[4]={'U','L','R','D'};int dx[4]={-1,0,0,1},dy[4]={0,-1,1,0};int n,m;void bfs(int x,int y){ queue<int> q; int u=x*m+y; vis[x][y]=1; fa[x][y]=u; dist[x][y]=0; q.push(u); while(!q.empty()) { // cout<<q.size()<<endl; u=q.front(); // cout<<u<<endl; q.pop(); // cout<<q.size()<<endl; int cx=u/m,cy=u%m; for(int i=0;i<4;i++) { int nx=dx[i]+cx; int ny=dy[i]+cy; if(nx>=0&&nx<n&&ny>=0&&ny<m&&maze[nx][ny]&&!vis[nx][ny]) { // cout<<"GG"<<endl; int v=nx*m+ny; vis[nx][ny]=1; fa[nx][ny]=u; dist[nx][ny]=dist[cx][cy]+1; last_dir[nx][ny]=i; q.push(v); } } }}/*void print_path(int x,int y){ int fx=fa[x][y]/m; int fy=fa[x][y]%m; if(fx!=x||fy!=y) { print_path(fx,fy); putchar(name[last_dir[x][y]]); }}*/int dir[maxn*maxn];void print_path(int x,int y){ int c=0; for(;;) { int fx=fa[x][y]/m; int fy=fa[x][y]%m; if(fx==x&&fy==y) break; dir[c++]=last_dir[x][y]; x=fx; y=fy; } while(c--) { putchar(name[dir[c]]); }}int main(){ while(cin>>n) { memset(vis,0,sizeof(vis)); cin>>m; for(int i=0;i<n;i++) { string s; cin>>s; for(int j=0;j<m;j++) maze[i][j]=s[j]-'0'; } bfs(0,0); for(int i=0;i<n;i++) for(int j=0;j<m;j++) { print_path(i,j); cout<<endl; cout<<dist[i][j]<<endl; } } return 0;}
0 0
- 小白书之迷宫最短路径bfs
- 迷宫问题之最短路径bfs
- bfs之迷宫最短路径
- 迷宫最短路径(bfs)
- BFS 迷宫最短路径
- 迷宫的最短路径之BFS算法
- BFS 迷宫的最短路径问题
- BFS:迷宫的最短路径
- BFS求迷宫的最短路径
- BFS求解迷宫最短路径
- BFS 模板 【迷宫的最短路径】
- 迷宫的最短路径 -- BFS
- BFS 迷宫的最短路径
- 迷宫最短路径长度bfs
- 迷宫的最短路径 (BFS)
- bfs 迷宫输出最短路径
- 迷宫的最短路径(bfs)
- 迷宫最短路径问题-BFS
- jsp中的JSTL与EL表达式用法及区别
- classLoader获取的几种方式
- handler机制的原理
- 缓存机制
- ios多线程的几种创建方式
- 小白书之迷宫最短路径bfs
- ZOJ QS Network (prime_裸题)
- 11203-rac升级到11204遇到的INS-06006和无法发现node的问题
- 欢迎使用CSDN-markdown编辑器
- [易飞]信息传递-多表(含外表)关联取值
- 九度oj 1063
- 快速排序法 quickSort---java
- 【八】疑难问题小结(一 -- 七篇)
- UVA 10123 No Tipping