题目描述
下图给出了一个迷宫的平面图,其中标记为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 <cstring>
#include <queue>
using namespace std;const int N = 50;
char g[N][N];
bool st[N][N];
char k[] = {'D', 'L', 'R', 'U'};//按字典序int dx[] = {1, 0, 0, -1}, dy[] = {0, -1, 1, 0};//按字典序struct node {int x;int y;string p;
};void bfs(int x, int y) {queue<node>q;node start;start.x = x, start.y = y, start.p = "";q.push(start);st[start.x][start.y] = true;while (q.size()) {node t = q.front();q.pop();for (int i = 0; i < 4; i++) {int xx = t.x + dx[i], yy = t.y + dy[i];if (xx < 0 || xx >= 30 || yy < 0 || yy >= 50)continue;if (g[xx][yy] == '1' || st[xx][yy])continue;node next;next.x = xx;next.y = yy;next.p = t.p + k[i];st[xx][yy] = true;if (next.x == 29 && next.y == 49) {cout << next.p << endl;return ;}q.push(next);}}
}int main() {for (int i = 0; i < 30; i++)cin >> g[i];bfs(0, 0);return 0;
}

答案为:
DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR

[蓝桥杯2019初赛]迷宫-bfs+存储路径相关推荐

  1. 蓝桥杯题目练习 提升篇 [蓝桥杯2019初赛]迷宫

    [蓝桥杯2019初赛]迷宫 题目描述 下图给出了一个迷宫的平面图,其中标记为1 的为障碍,标记为0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为左上角, ...

  2. [蓝桥杯2019初赛]迷宫-DFS、BFS两种方法

    迷宫问题的最短路,加最小字典序 迷宫文件maze.txt传送门 作者写的2019年B组蓝桥杯解集 . . . DFS的版本 #include<iostream> #include<c ...

  3. [蓝桥杯2019初赛]立方和

    [蓝桥杯2019初赛]立方和 无脑暴力 #include<bits/stdc++.h> using namespace std; typedef long long ll; ll fast ...

  4. 蓝桥杯 python 走迷宫 BFS

    蓝桥杯 python 走迷宫 BFS 题目描述 给定一个 N × × × M 的网格迷宫 G.GG的每个格子要么是道路,要么是障碍物(道路用 1 表示,障碍物用 0 表示). 已知迷宫的入口位置为 ( ...

  5. 蓝桥杯2019初赛 外卖店优先级 java

    蓝桥杯2019初赛 外卖店优先级 因为疫情的原因,4月份的蓝桥杯推迟到了现在,其实一直以来也没有准备这个比赛,只有一两天时间了,刷几道真题抱一下佛脚. 下面开始说正事: 这道题如果思路不对的话,可能做 ...

  6. adv147(蓝桥杯) 学霸的迷宫 bfs

    问题描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...

  7. [蓝桥杯2019初赛]质数-质数筛or 水题

    法一: 代码如下: #include <iostream> #include <cmath> using namespace std;bool check(int x) {fo ...

  8. [蓝桥杯2019初赛]数的分解-枚举

    题目描述 把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法? 注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18 和1001 ...

  9. [蓝桥杯2019初赛]年号字串-数论+模拟

    题目描述 小明用字母A 对应数字1,B 对应2,以此类推,用Z 对应26.对于27以上的数字 小明用两位或更长位的字符串来对应,例如AA 对应27,AB 对应28,AZ 对应52,LQ 对应329. ...

最新文章

  1. Imec推出高性能芯片的低成本冷却解决方案
  2. Hyperledger Fabric(术语表)
  3. 深度学习基础(基本概念、优化算法、初始化、正则化等)
  4. UA MATH567 高维统计I 概率不等式1 Hoeffding不等式与Chernoff不等式
  5. tensorflow实现基于LSTM的文本分类方法
  6. boost::math::acosh用法的测试程序
  7. C#起步:WinForm当中的字符
  8. Linux make 报错 pkg-config:not found
  9. 【Android TV 开发】-->一些优秀 TV 开发相关框架 文章
  10. 《和平精英》新模式,玩法竟跟《使命召唤》和《王牌战士》类似?
  11. Android Studio 修改 APP名称 和标题 为汉字
  12. ssh隧道连接的3种方式
  13. fgets函数的用法
  14. mysql服务端heidisql_MySQL管理工具HeidiSQL
  15. Unity 程序员推荐书目
  16. 通信端口感叹号_解决通用串行总线控制器总是有感叹号的办法
  17. ”垂死挣扎还是涅槃重生 -- Delphi XE5 发布会归来感想“的感想
  18. mysql多实例部署
  19. android自带的nsd发现服务器,Android NSD不会发现所有服务
  20. 【ARM-Linux开发】嵌入式操作系统上的小型数据库移植SQLite

热门文章

  1. NDVI最大值法MVC合成之ArcGIS Cell Statistics 实现
  2. linux c之用fputc和fgetc复制文件并且打印在终端
  3. linux之which命令
  4. Android之Launcher分析和修改3——Launcher启动和初始化
  5. Android之Bitmap的内存优化方案总结
  6. html的canvas标签用法,html5中关于canvas标签用法(绘图)
  7. python随机生成100内的10个整数_用python随机生成数字教程_如何用Python编程随机产生10个随机整数,并输出这10个整数的和�9�3...
  8. 趁爸妈不在家约男朋友回家吃饭,然而......
  9. 就你这个求婚态度,能嫁给你才怪!
  10. 童年各大名场面~ | 今日最佳