【问题描述】
下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可
以通行的地方。
010000
000100
001001
110000
迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这
个它的上、下、左、右四个方向之一。
对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫,
一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。
对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式,
其使用的步数最少,在步数最少的前提下,请找出字典序最小的一个作为答案。
请注意在字典序中D<L<R<U。
01010101001011001001010110010110100100001000101010
00001000100000101010010000100000001001100110100101
01111011010010001000001101001011100011000000010000
01000000001010100011010000101000001010101011001011
00011111000000101000010010100010100000101100000000
11001000110101000010101100011010011010101011110111
00011011010101001001001010000001000101001110000000
10100000101000100110101010111110011000010000111010
00111000001010100001100010000001000101001100001001
11000110100001110010001001010101010101010001101000
00010000100100000101001010101110100010101010000101
11100100101001001000010000010101010100100100010100
00000010000000101011001111010001100000101010100011
10101010011100001000011000010110011110110100001000
10101010100001101010100101000010100000111011101001
10000000101100010000101100101101001011100000000100
10101001000000010100100001000100000100011110101001
00101001010101101001010100011010101101110000110101
11001010000100001100000010100101000001000111000010
00001000110000110101101000000100101001001000011101
10100101000101000000001110110010110101101010100001
00101000010000110101010000100010001001000100010101
10100001000110010001000010101001010101011111010010
00000100101000000110010100101001000001000000000010
11010000001001110111001001000011101001011011101000
00000110100010001000100000001000011101000000110011
10101000101000100010001111100010101001010000001000
10000010100101001010110000000100101010001011101000
00111100001000010000000110111000000001000000001011
10000001100111010111010001000110111010101101111000

代码实现:

#include<iostream>
#include<queue>
using namespace std;int m=30,n=50;//m行,n列的地图
struct point{int x;  //行坐标int y;  //列坐标string str;//记录路径
};
string map[30];
int vis[30][50];//用于标记
//D L R U
int dx[4]={1,0,0,-1};
int dy[4]={0,-1,1,0};
string dir="DLRU";//要打印的方向void BFS()
{queue<point>q;q.push({0,0,""});vis[0][0]=1;while(!q.empty())//队列不为空的情况下{point now=q.front();//第一个元素出队q.pop();//删除第一个元素释放空间if(now.x==m-1&&now.y==n-1)//如果是出口{cout<<now.str<<endl;//打印路径}for(int i=0;i<4;i++){int nx=now.x+dx[i];int ny=now.y+dy[i];if(nx<0||nx==m||ny==n||ny<0||vis[nx][ny]==1||map[nx][ny]=='1')continue;//地图越界或者之前被访问过或着是障碍,重新选方向q.push({nx,ny,now.str+dir[i]});//将新元素入队vis[nx][ny]=1;}}
}int main()
{//处理输入for(int i=0;i<m;i++)cin>>map[i];BFS();return 0;
}

BFS解迷宫问题(经典BFS算法)相关推荐

  1. c语言动画原理,动画详解十大经典排序算法(C语言版)

    排序算法是程序员必备的基础知识,弄明白它们的原理和实现很有必要.本文中将通过非常细节的动画展示出算法的原理,配合代码更容易理解. 概述 由于待排序的元素数量不同,使得排序过程中涉及的存储器不同,可将排 ...

  2. 任意大小迷宫自动生成+BFS寻路+生成无损迷宫bitmap(.BMP)图片

    目录标题 迷宫游戏 迷宫的生成 BFS寻找路线 最后的一些细枝末节 如何使用程序 链接 I TURN COFFEE INTO CODE! 800x800迷宫自动解路径 镇楼图 https://pan. ...

  3. 十大经典排序算法-桶排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  4. 十大经典排序算法-快速排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  5. 十大经典排序算法-选择排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  6. 十大经典排序算法-希尔排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  7. 十大经典排序算法-归并排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  8. 十大经典排序算法-冒泡排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  9. 里奥老师乾坤大挪移—深入浅出走迷宫问题之BFS算法1

    还是要从经典的走迷宫问题开始 DFS的思路是只选择一个方向,一条路走到黑,不撞南墙不回头. 而BFS的思路,每一步在走之前,我都要把所有的选择,所有的方向全看一遍,一层一层的往外扩展. 显然DFS比B ...

最新文章

  1. 2022-2028年中国生物类似药产业深度调研及前瞻分析报告
  2. IP地址审计在事件追溯中的应用
  3. 4-15 OS(线程,用户态,内核态,页) 数据库(原子性,日志) JAVA(I/O)
  4. 自学python还是报班-零基础学Python是应该报课还是自学?
  5. php 时钟函数,使用PHP的日期与时间函数技巧
  6. saber 2012安装教程
  7. python(matplotlib2)——legend图例,Annotation图片注解
  8. mysql kill 脚本_批量 kill mysql 中运行时间长的sql
  9. 【UI/UX】浅谈Spin框
  10. Seven times have I despised my soul 《我曾七次鄙视自己的灵魂》
  11. 《白帽子讲web安全》第1章 我的安全世界观
  12. 社区团购小程序开发安装教程(基于yii框架+PHP)
  13. vijos 1004 伊甸园日历游戏 博弈+打表找规律
  14. 国内交通银行OSA账户被注销后,企业该如何面对这种局面?
  15. 阿里云acp证书有用吗?阿里云acp证书考试内容有哪些?
  16. ”excel 无法粘贴信息,原因是复制区域与粘贴区域形状不同“解决方法
  17. NandFlash 驱动分析与基础功能实现
  18. EFI系统分区必须挂载到/boot/efi其中之一
  19. ssm学生档案管理系统
  20. 那些数学不好的程序员,最后都怎么样了?

热门文章

  1. 如何调整系统屏幕亮度和程序内部屏幕亮度
  2. ftpd服务器配置文件,中文解释PureFTPd配置文件网络服务器 -电脑资料
  3. iPhone数据线能轻松黑掉你的电脑/联通新版冰激凌来了,以上为今日内容
  4. XML语言数据读写理解1
  5. 暑期特别企划 | 快来接收 PingCAP Talent Plan 的小惊喜!
  6. Python ftplib实现图片管理中心
  7. 小马哥--高仿苹果6s plus 主板型号H339P-v72刷机拆机主板图与开机识别图
  8. 互联网江湖,“鲶鱼”如何变“鲨鱼”?
  9. VHDL程序的基本结构
  10. python报错String or binary data would be truncated