C++广度优先搜索算法之走迷宫
来源:互联网 发布:美女容易出轨知乎 编辑:程序博客网 时间:2024/05/29 09:26
走迷宫
题目描述
一个网格迷宫由n行m列的单元格组成,每个单元格要么是空地(用1表示),要么是障碍物(用0表示)。你的任务是找一条从起点到终点的最短移动序列。用U、D、L、R分别表示往上、下、左、右移动到相邻单元格。不能走到障碍物上,也不能走出迷宫。起点和终点保证是空地,保证从起点到终点一定存在至少一条路径。
输入
第1行:2个整数n和m,分别表示行数和列数(n,m <=100)
接下来n行,每行m个0、1数字,描述迷宫
最后1行:4个整数x1, y1, x2, y2,分别表示起点和终点的行号和列号,行和列均从1开始编号
输出
第1行:一个字符串,表示起点到终点的移动序列。若有多个方案,任一个方案均可。
样例输入
5 5
0 0 0 1 0
1 0 1 1 1
1 1 1 0 0
0 1 0 0 0
1 1 1 0 0
2 5 5 3
样例输出
LLDLDDR
这道题是广度优先搜索算法的一道经典例题。
代码如下:
#include<cstdio>#include<cstdlib>int head=0,tail=1,nextx,nexty,n,m,beginx,beginy,endx,endy;int pre[100000],a[100000],b[100000],map[200][200];int x[4]={-1,1,0,0},y[4]={0,0,-1,1};bool mark[200][200];char way[100000],word[4]={'U','D','L','R'};void find(int x){ if(pre[x]!=0) { find(pre[x]); printf("%c",way[x]); }}bool check(int x,int y){ if(x<=n&&y<=m&&x>0&&y>0) return 1; return 0;}void bfs(){ a[1]=beginx; b[1]=beginy; mark[beginx][beginy]=1; while(head!=tail) { head++; for(int i=0;i<4;i++) { nextx=a[head]+x[i]; nexty=b[head]+y[i]; if(check(nextx,nexty)&&!mark[nextx][nexty]&&map[nextx][nexty]==1) { tail++; a[tail]=nextx; b[tail]=nexty; pre[tail]=head; way[tail]=word[i]; mark[nextx][nexty]=1; if(a[tail]==endx&&b[tail]==endy) { find(tail); printf("\n"); exit(0); } } } }}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&map[i][j]); scanf("%d%d%d%d",&beginx,&beginy,&endx,&endy); bfs();}
阅读全文
1 0
- C++广度优先搜索算法之走迷宫
- 走迷宫2(广度优先搜索)
- 走迷宫问题(广度优先搜索)
- 走迷宫 A*算法 广度优先算法
- 迷宫之广度优先搜索
- C++广度优先搜索算法之走出迷宫
- C++广度优先搜索算法之迷宫问题
- C语言广度优先搜索之迷宫(队列)
- 广度优先搜索迷宫的最短路径走法!
- 广度优先搜索例2--走迷宫问题
- 算法之广度优先搜索
- DFS深度优先搜索之走迷宫
- 迷宫问题-广度优先搜索
- 迷宫问题-广度优先搜索
- 广度优先搜索:迷宫问题
- 机试算法讲解: 第41题 广度优先搜索之迷宫问题
- 算法:队列与广度优先搜索(迷宫问题)
- 广度优先搜索迷宫路径算法的实现
- 377. Combination Sum IV Medium
- 使用Maven管理引用的jar包
- mysql
- org.springframework.dao.InvalidDataAccessApiUsageException: Write operations
- java multithread之join
- C++广度优先搜索算法之走迷宫
- python得到单词模式
- jquery 点击事件 第一次点击选中 第二次点击改变状态
- saltstack老的master主机性能不行,如何迁移到新主机
- Hbase的Java API的利用(有关图片等数据的put和get)
- shell脚本编程基础1及练习
- 百度地图定位核心代码
- 源码阅读分析
- websocket的Java实现