maze.txt文件内容如下:

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

Ideas

迷宫问题想搜索,最优问题想广搜。

广搜需要使用队列,队列元素存储(x, y, path),分别表示当前到达的位置坐标和路径。

然后遍历(x, y)位置的上、下、左、右四个方向,分别判断有没有障碍,选择没有障碍的方向继续前进,一直走到出口为止。

Code

Python

from collections import dequeif __name__ == '__main__':maze = []with open("./maze.txt") as fp:for line in fp.readlines():maze.append(list(line.strip()))rows, cols = len(maze), len(maze[0])visit = [[False] * cols for _ in range(rows)]queue = deque()queue.append((0, 0, ""))while queue:x, y, path = queue.popleft()if x == rows - 1 and y == cols - 1:print(path)breakdirect = ['R', 'D', 'L', 'U']for i, (dx, dy) in enumerate([(0, 1), (1, 0), (0, -1), (-1, 0)]):nx, ny = x + dx, y + dyif -1 < nx < rows and -1 < ny < cols and maze[nx][ny] == '0' and not visit[nx][ny]:queue.append((nx, ny, path + direct[i]))visit[nx][ny] = True

2019年第十届蓝桥杯 - 省赛 - C/C++大学A组 - D. 迷宫相关推荐

  1. 2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - B. 矩形切割

    题目链接:https://www.lanqiao.cn/courses/2786/learning/?id=67815 Ideas 对于一个矩形来说,能切割下来的正方形肯定是以较短的那条边为边长,然后 ...

  2. 2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - D. 质数

    Ideas 本来一开始想到的是质数筛,但是埃式筛是用来筛选 n 以内的所有质数,并不能找到第 n 个质数,除非找到一个足够大的 n 能够把第 2019 个质数包含进去. 可能质数筛还有升级,能够用来找 ...

  3. 2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - B. 年号字串

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

  4. 2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - D. 数的分解

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

  5. 2019年第十届蓝桥杯 - 省赛 - C/C++大学A组 - G. 日期问题

    题目 标题:日期问题 小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月 ...

  6. 2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - I. 后缀表达式

    题目链接:https://www.lanqiao.cn/courses/2786/learning/?id=67814 Ideas 简单回顾一下前缀.中缀.后缀表达式 前缀表达式:前缀表达式的运算符位 ...

  7. 2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - C. 数列求值

    [问题描述] 给定数列 1, 1, 1, 3, 5, 9, 17, -,从第 4 项开始,每项都是前 3 项的和. 求第 20190324 项的最后 4 位数字. [答案提交] 这是一道结果填空的题, ...

  8. 2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - F. 旋转

    Ideas 有点类似于线性代数的矩阵转置,不过这个是顺时针转90°,转置相当于是逆时针转90°. 但其实原理是一样的,矩阵转置是第一行变为第一列,第二行变为第二列-- 顺时针转90°其实就是第一行变为 ...

  9. 2019年第十届蓝桥杯 - 省赛 - C/C++大学A组 - A. 平方和

    Ideas 迭代+Check. Code C++ #include <iostream> using namespace std;bool check(int num) {while (n ...

最新文章

  1. MOS管体二极管的作用
  2. 单片机怎么做定时器矩阵,彻底解决各种定时问题?
  3. Java异常之异常机制
  4. 阿里内部禁用Executors创建线程池,为什么?
  5. python入门买什么书-关于 Python 的经典入门书籍有哪些?
  6. (补充)常用端口大全
  7. JavaScript - JavaScript自定义弹出对话框
  8. Java集合框架:Arrays工具类
  9. 虚拟系统管理VSM提高服务器整合率
  10. 微软Azure首席架构师John Gossman就微软加入Linux基金会一事答疑
  11. 计算机声音管理器不见了,Realtek高清晰音频管理器怎么找不到打开教程
  12. 推荐9款便签云生成工具
  13. 配置JAVA_HOME
  14. 优质数据平台如何打造?从网易云音乐看内容生态的运营法则
  15. SQL Server 简单模式下,误删除堆表记录如何恢复(绕过页眉校验) (转)
  16. 亿佰特LoRaWAN入网TTN并订阅MQTT消息
  17. QIIME2得到PICRUSt2结果后如何分析
  18. 270w活跃UP主的B站,品牌该如何选择?
  19. 估图数科财税票采集机器人进行合规数据采集
  20. vitis HLS 在进行C simulation时遇到工程csim/build/csim.exe not found 报错的问题排查

热门文章

  1. 设计模式之控制反转和依赖注入的使用小结
  2. 微信小程序家庭记账本开发进度二
  3. linux 的overcommit_memory、overcommit_ratio、swappiness 的说明
  4. 一道PHP题引出的“短路求值”
  5. OAuth2.0学习(1-9)新浪开放平台微博认证-web应用授权(授权码方式)
  6. iOS-控件响应用户控制事件之事件处理
  7. Mvc中使用MvcSiteMapProvider实现站点地图之基础篇
  8. sql2012包含数据库,快速生成用户tsql脚本
  9. Linux软件安装之RPM的安装技巧
  10. 室外建筑表现3Dmax和vray常用材质参数设置