【题目描述】

一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。

给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。

【输入】

第一行是两个整数,R和C,代表迷宫的长和宽。( 1≤ R,C ≤ 40)

接下来是R行,每行C个字符,代表整个迷宫。

空地格子用‘.’表示,有障碍物的格子用‘#’表示。

迷宫左上角和右下角都是‘.’。

【输出】

输出从左上角走到右下角至少要经过多少步(即至少要经过多少个空地格子)。计算步数要包括起点和终点。

【输入样例】

  1. 5 5
  2. ..###
  3. #....
  4. #.#.#
  5. #.#.#
  6. #.#..

【输出样例】

9

【思路】: 简单的bfs求最优,不多说就是要注意上面加粗的字

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cmath>
  5. #include<algorithm>
  6. #include<string>
  7. #include<cstdlib>
  8. #include<queue>
  9. #include<vector>
  10. #define N 101
  11. using namespace std;
  12. int r,c;
  13. char a[N][N];
  14. bool vis[N][N];
  15. ][]= {{-,},{,},{,-},{,}};
  16. struct node {
  17. int x;
  18. int y;
  19. int step;
  20. } q[N*];
  21. void bfs(int sx,int sy,int ex,int ey) {
  22. ,tail=;
  23. memset(vis,,sizeof(vis));
  24.  
  25. vis[sx][sy]=;
  26. q[tail].x=sx;
  27. q[tail].y=sy;
  28. q[tail].step=;
  29. tail++;
  30.  
  31. while(head<tail) {
  32. int x=q[head].x;
  33. int y=q[head].y;
  34. int step=q[head].step;
  35. if(x==ex&&y==ey) {
  36. printf("%d\n",step);
  37. break;
  38. }
  39. ; i<; i++) {
  40. ];
  41. ];
  42. &&nx<r&&ny>=&&ny<c&&vis[nx][ny]==&&a[nx][ny]=='.') {
  43. vis[nx][ny]=;
  44. q[tail].x=nx;
  45. q[tail].y=ny;
  46. q[tail].step=step+;
  47. tail++;
  48. }
  49. }
  50. head++;
  51. }
  52. }
  53. int main() {
  54. scanf("%d%d",&r,&c);
  55. ; i<r; i++)
  56. scanf("%s",a[i]);
  57. bfs(,,r-,c-);
  58. ;
  59. }
  1.  

【bfs】1252 走迷宫的更多相关文章

  1. HDU 2102 A计划(BFS/DFS走迷宫)

    A计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  2. ACM:图的BFS,走迷宫

    题目: 一个网格迷宫由n行m列的单元格组成,每一个单元格要么是空地(用1表示),要么是障碍物(用0来表示).你的任务是找一条从起点到终点的最短移动序列,当中UDLR分别表示往上.下.左.右移动到相邻单 ...

  3. (图 BFS)走迷宫

    题目: 给一个迷宫,求出从起点到终点的路径.迷宫 src.txt 文件内容如下,第一行是迷宫的行列数,后面行是迷宫,1表示可行走,0表示不可以通过,起点是最左上角,终点是最右下角: 解析: 其实就是图 ...

  4. 一本通之 一堆迷宫 (Dungeon Master&走出迷宫&走迷宫)

    一本通在线崩溃....... . 有图有真相 这是个三维迷宫,其实和二位迷宫差不多,只是方向多加了2个. 但这个题的输入十分恶心,一度被坑的用cin.ignore(),但还是不过... 它的正确输入方 ...

  5. 【BZOJ2707】[SDOI2012]走迷宫 Tarjan+拓扑排序+高斯消元+期望

    [BZOJ2707][SDOI2012]走迷宫 Description Morenan被困在了一个迷宫里.迷宫可以视为N个点M条边的有向图,其中Morenan处于起点S,迷宫的终点设为T.可惜的是,M ...

  6. Java基于OpenCV实现走迷宫(图片+路线展示)

    Java基于OpenCV实现走迷宫(图片+路线展示) 由于疫情,待在家中,太过无聊.同学发了我张迷宫图片,让我走迷宫来缓解暴躁,于是乎就码了一个程序出来.特此记录. 原图: 这张图,由于不是非常清晰, ...

  7. 百炼3752:走迷宫--栈实现dfs

    3752:走迷宫 总时间限制:  1000ms 内存限制:  65536kB 描述 一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走:有的格子是空地,可以走.给定一个迷宫,求从左上角走到右下角最 ...

  8. 第四周PTA笔记 好吃的巧克力+特殊的翻译+下次一定(续)+走迷宫

    好吃的巧克力 超市正在特价售卖巧克力,正好被贪吃的Lucky_dog看见了. 巧克力从左到右排成一排,一共有N个,M种. 超市有一个很奇怪的规定,就是你在购买巧克力时必须提供两个数字a和b,代表你要购 ...

  9. C语言动态走迷宫

    曾经用C语言做过的动态走迷宫程序,先分享代码如下: 代码如下: //头文件 #include<stdio.h> #include<windows.h>//Sleep(500)函 ...

随机推荐

  1. 【问题解决方案】Git bash进入多层子目录问题(通配符问题留坑)

    cd进入指定路径下:cd 斜杠 斜杠 方法一: 1- 撇丿,不是"那",盘符前面要加上 / (d盘前面也加,不加也行) 2- 路径名不区分大小写 3- 不用空格 4- 如果目录名中 ...

  2. 【学习总结】Master课程 之 虚拟化与云计算

    Section 1- Cloud Computing Introduction-云计算介绍 1-What can Cloud Computing do? - 云计算可以做什么? 服务模式:美国国家标准 ...

  3. linux如何查看所有的用户(user)、用户组(group)、密码(password/passwd)

    linux如何查看所有的用户和组信息_百度经验https://jingyan.baidu.com/article/a681b0de159b093b184346a7.html linux添加用户.用户组 ...

  4. 如何在 Linux 中查找最大的 10 个文件

    https://linux.cn/article-9495-1.html

  5. bootstrap模态框动态赋值, ajax异步请求数据后给id为queryInfo的模态框赋值并弹出模态框(JS)

    /查询单个 function query(id) { $.ajax({ url : "/small/productServlet", async : true, type : &q ...

  6. 关于vagrant一个虚拟机搭建多个项目配置(总结)

    问题1:执行vagrant status命令,报错,没有找到命令,翻译:“vargrant bash命令没有找到.” 解答:因为在/home目录中,所有无法执行该命令,需要切换到外部进行执行 问题2: ...

  7. Notepad++ 安装 NppFTP 插件

    How to install a plugin The plugin (in the DLL form) should be placed in the \plugins subfolder of t ...

  8. spring boot中常用的配置文件的重写

    @Configuration public class viewConfigSolver extends WebMvcConfigurerAdapter { /* spring boot 已经自动配置 ...

  9. react & youtube

    react & youtube https://www.npmjs.com/package/react-youtube https://developers.google.com/youtub ...

  10. 用dbExpress页的SQLConnection1连接sql server2000怎么设置。 [问题点数:0分]

    在d7或者c6已经支持了. 贡献一下我的代码吧:dbeConn:= TSQLConnection.Create(nil);       dbeConn.Params.Clear;       dbeC ...