poj 3984 迷宫问题 bfs
来源:互联网 发布:短信验证码平台源码 编辑:程序博客网 时间:2024/05/17 01:34
迷宫问题
Time Limit: 1000MS Memory Limit: 65536K
Description
定义一个二维数组:
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
Input
一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。
Output
左上角到右下角的最短路径,格式如样例所示。
Sample Input
0 1 0 0 00 1 0 1 00 0 0 0 00 1 1 1 00 0 0 1 0
Sample Output
(0, 0)(1, 0)(2, 0)(2, 1)(2, 2)(2, 3)(2, 4)(3, 4)(4, 4)
打印路径的bfs,我用的栈,也可以用C++自带的递归函数
#include<iostream>#include<queue>#include<stack>#include<cstring>#include<cstdio>using namespace std;int wl[4][2]= {-1,0,0,1,1,0,0,-1};int flag[5][5];int a[5][5];struct node{ int x,y; node(int x=0,int y=0):x(x),y(y) {}};node we[6][6];int nx,ny;void bfs(){ int x,i,j,y; memset(flag,0,sizeof(flag)); queue<node> que; que.push(node(0,0)); flag[0][0]=1; while(!que.empty()) { node t=que.front(); x=t.x; y=t.y; que.pop(); if(x==4&&y==4) { break; } for(i=0; i<4; i++) { nx=x+wl[i][0]; ny=y+wl[i][1]; if(nx>=0&&ny>=0&&nx<5&&ny<5&&flag[nx][ny]==0&&a[nx][ny]==0) { flag[nx][ny]=1; we[nx][ny].x=x; we[nx][ny].y=y; que.push(node(nx,ny)); } } }}void print(){ stack<node> stk; int x=4,y=4,tx,ty; stk.push(node(4,4)); while(x!=0||y!=0) { tx=x; ty=y; x=we[tx][ty].x; y=we[tx][ty].y; stk.push(node(x,y)); } while(!stk.empty()) { node t=stk.top(); stk.pop(); printf("(%d, %d)\n",t.x,t.y); }}int main(){ int i,j; for(i=0; i<5; i++) for(j=0; j<5; j++) scanf("%d",&a[i][j]); bfs(); print(); return 0;}
1 0
- POJ 3984-迷宫问题 BFS
- poj 3984 迷宫问题(bfs)
- POJ 3984 迷宫问题 BFS
- poj 3984 迷宫问题 bfs
- POJ 3984 || 迷宫问题 (bfs
- POJ 3984 迷宫问题 BFS
- POJ 3984 迷宫问题(bfs)
- BFS-POJ-3984-迷宫问题
- 迷宫问题 POJ 3984 【BFS】
- POJ 3984 迷宫问题 (BFS)
- POJ 3984:迷宫问题【BFS】
- POJ 3984迷宫问题(BFS)
- poj 3984 迷宫问题 bfs
- POJ 3984:迷宫问题【BFS】
- POJ 3984 迷宫问题 BFS
- poj 3984 迷宫问题(bfs)
- POJ 3984 ,迷宫问题(bfs)
- poj 3984 迷宫问题 (BFS)
- 【HDU】5452 Minimum Cut(2015 ACM/ICPC Shenyang Online)
- Notes On FractalNet
- android fill_parent和match_parent 的区别
- 关于epoll和select的区别,哪些说法是正确的?----腾讯2016研发工程师在线模拟笔试题
- BZOJ 2286: [Sdoi2011]消耗战
- poj 3984 迷宫问题 bfs
- Xml解析
- 泛型接口的实现方式二:直接在接口中指定具体类型
- vector 的使用
- Java 运算符的总结
- 《JAVA中的集合框架》
- Android 系统服务一览表
- 优化
- linux ——make