poj 3984 迷宫问题 (BFS)
来源:互联网 发布:gtx1070 gpu数据 编辑:程序博客网 时间:2024/06/06 08:24
迷宫问题
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 24384 Accepted: 14223
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)
Source
这是一道很经典的BFS。
思路:用结构体来存每个状态的x,y值,还有他们的标号以及到达这个状态前一个状态的标号(为了按照顺序输出)。每当搜索了一个点后就要把这个点做一个访问标记,防止下一次重复访问。每次符合条件的都可以将其状态压入队列中等待下一次的搜素。
最后搜到了(4,4)这个点就按照他们的标号依次输出出来就行了。
#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;int d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};int maze[6][6];int vis[6][6],num=0;struct node{ int x,y,pre,id;}q[100];void print(int num){ if(q[num].pre!=-1) print(q[num].pre); printf("(%d, %d)\n",q[num].x,q[num].y);}void bfs(int x,int y){ queue<node> que; q[num].x=x,q[num].y=y,q[num].id=num; q[num].pre=-1; que.push(q[num++]); while(!que.empty()) { node tmp=que.front(); que.pop(); for(int i=0;i<4;i++) { int x=tmp.x+d[i][0]; int y=tmp.y+d[i][1]; if(x==4&&y==4) { q[num].x=x,q[num].y=y; q[num].pre=tmp.id,q[num].id=num; print(num); break; } if(x>=0&&x<=4&&y>=0&&y<=4&&!vis[x][y]&&maze[x][y]==0) { vis[x][y]=1; q[num].x=x,q[num].y=y; q[num].pre=tmp.id,q[num].id=num; que.push(q[num++]); } } }}int main(){ for(int i=0;i<5;i++) for(int j=0;j<5;j++) scanf("%d",&maze[i][j]); memset(vis,0,sizeof(vis)); bfs(0,0); return 0;}
阅读全文
0 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)
- Leetcode2D平面DFS
- 单体应用对比微服务
- Cellular Automaton UVA
- jzoj 3456 恭介的法则
- 临时表经典使用范例
- poj 3984 迷宫问题 (BFS)
- 2017"百度之星"程序设计大赛
- 配置tomcat-users.xml
- ccf认证命令行选项90分
- 51nod 1714-B君的游戏(尼姆博弈)
- 【CUGBACM15级BC第22场 C】hdu 5144 NPY and shot
- 【第2章】Python基本元素:数字、字符串和变量
- HDU6129 Just do it(前缀异或+杨辉三角)
- 机器学习基石(2)