蓝桥杯 python 走迷宫 BFS

题目描述
给定一个 N × × × M 的网格迷宫 G。GG的每个格子要么是道路,要么是障碍物(道路用 1 表示,障碍物用 0 表示)。

已知迷宫的入口位置为 ( x 1 x_1 x1​ , y 1 y_1 y1​),出口位置为 ( x 2 x_2 x2​, y 2 y_2 y2​)。问从入口走到出口,最少要走多少个格子。

输入描述
输入第 11 行包含两个正整数 N,M,分别表示迷宫的大小。

接下来输入一个 N × × ×M 的矩阵。若 G i , j G_{i,j} Gi,j​=1 表示其为道路,否则表示其为障碍物。

最后一行输入四个整数 x 1 x_1 x1​, y 1 y_1 y1​, x 2 x_2 x2​, y 2 y_2 y2​,表示入口的位置和出口的位置。

1 ≤ N , M ≤ 1 0 2 , 0 ≤ G i , j ≤ 1 , 1 ≤ x 1 , x 2 ≤ N , 1 ≤ y 1 , y 2 ≤ M 1\leq N,M\leq10^2,0\leq G_{i,j}\leq 1, 1\leq x_1,x_2\leq N, 1\leq y_1, y_2\leq M 1≤N,M≤102,0≤Gi,j​≤1,1≤x1​,x2​≤N,1≤y1​,y2​≤M。

输出描述
输出仅一行,包含一个整数表示答案。
若无法从入口到出口,则输出 -1−1。
输入输出样例
示例 1
输入

5 5
1 0 1 1 0
1 1 0 1 1
0 1 0 1 1
1 1 1 1 1
1 0 0 0 1
1 1 5 5

输出

8

解题思路
队列
但是我不能理解用vis = [[0] * m ] * n 生成一个二维矩阵来保存距离答案是错误的,只能vis = [[0 for i in range(m)] for j in range(n)] 动态生成。有理解的在评论区里说一声。


vis = [[0] * m ] * n 表示
列表*n,所有列表共享地址,这样的话vis矩阵永远改的是第一个。


from collections import deque
n, m = map(int,input().split())
g = [list(map(int,input().split())) for i in range(n)]
d = [(1,0),(-1,0),(0,1),(0,-1)]vis = [[0 for i in range(m)] for j in range(n)] # 动态生成
# vis = [[0] * m ] * n # vis不能这样生成
x1, y1 , x2, y2 = map(int,input().split())q = deque()def bfs(x,y):q.append([x,y])# 标记为非0 表示访问过  并且作为累加步数  后面要减一vis[x][y] =1while q:  # 当队列不空now = q.popleft()  # 出队nx = now[0] # now_xny = now[1] # now_yif nx == x2-1 and ny == y2-1: # 到终点breakfor i in d:   # 向4个方向搜索dx = nx+i[0]dy = ny+i[1]if 0 <= dx < n and 0 <= dy < m:# 0 未访问过  并且不是障碍物if vis[dx][dy] == 0 and g[dx][dy] == 1:q.append([dx,dy])  # 入队# 累加 之前的点加上1   非0 表示访问过vis[dx][dy] = vis[nx][ny] + 1return vis[x2-1][y2-1]
# 后面要减一  因为起始点为1累加的
print(bfs(x1-1,y1-1)-1)

蓝桥杯 python 走迷宫 BFS相关推荐

  1. [蓝桥杯2019初赛]迷宫-bfs+存储路径

    题目描述 下图给出了一个迷宫的平面图,其中标记为1 的为障碍,标记为0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为左上角,出口为右下角,在迷宫中,只能 ...

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

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

  3. java蓝桥杯省赛第十届_2019年第十届蓝桥杯省赛-迷宫(BFS/Excel大法)

    这题用dfs搜不出来,需要使用bfs并记录路径,设置好方向顺序跑就ok 然而毕竟是暴力杯,我们的原则是代码能省就省(懒癌晚期 于是乎网上便出现了形形色色的题解,笔者综合了各路大神神乎其技的思想,总结出 ...

  4. 蓝桥杯Python初级组测试题之Turtle画图2

    蓝桥杯Python初级组测试题之Turtle画图2 1. 画8个内接正五边形 题目描述 解题思路 (1) 共有n=8个正五边形,因而有8次循环,每次旋转角度增加ang=360/n (2) 画内接正五边 ...

  5. 蓝桥杯python组一个星期备战记录贴

    蓝桥杯python组一个星期备赛记录贴 文章目录 前言 注意事项: 一.贪心算法 二.最小生成树之Prim算法 三.动态规划 四.递归算法 五.树与堆 前言 目前是2021年4月11日,一位pytho ...

  6. 2022年蓝桥杯Python程序设计B组思路和代码分享

    2022年蓝桥杯Python程序设计B组比赛结束了,分享一下题目以及思路. 文章目录 A:排列字母 题目: 思路: 代码: B: 寻找整数 题目: 思路: 代码: C: 纸张尺寸 题目: 思路: 代码 ...

  7. 蓝桥杯Python初级组测试题之Turtle画图

    蓝桥杯Python初级测试题之Turtle画图 写这个主要是为了辅助和讲解过蓝桥杯的初级测试,难度并不高,重点在于解析过程. 画圆形和以及菱形阵列 思路: 第1步: 设置整体参数,如循环画菱形的次数为 ...

  8. 2021-04-24 蓝桥杯 Python 第五题--密室逃脱

    Python 2021-04-24 蓝桥杯 第五题解题思路 密室逃脱 提示信息: 游戏规则: 编程实现: 输入描述 输出描述 解题思路 解法一 解法二 解法三 2021-04-24 蓝桥杯Python ...

  9. 第十三届蓝桥杯Python 大学B组真题详解

    第十三届蓝桥杯Python B组真题详解 试题A 排列字母 试题B 寻找整数 试题C 纸张尺寸 试题D 位数排序 试题E 蜂巢 试题F 消除游戏 试题G 全排列的价值 试题H 技能升级 试题I 最长不 ...

最新文章

  1. MDX Step by Step 读书笔记(五) - Working with Expressions (MDX 表达式)
  2. 自己珍藏一些有趣的Python子程序
  3. 2021年春季学期-信号与系统-第十一次作业参考答案-第一小题
  4. 小学生们在B站讲算法,网友:我只会阿巴阿巴
  5. 成功解决 threading Exception unhandled RuntimeError
  6. 使用Opencv构建一个简单的图像相似检测器(MSE、SSIM)
  7. PHP中 base64_decode与base64_encode加密解密函数
  8. 【Tools】Visual Studio 2010下载和安装
  9. explain 之 type
  10. asp.net core自定义依赖注入容器,替换自带容器
  11. bigint hive java类型_详解Apache Hudi如何配置各种类型分区
  12. 基于JAVA+Servlet+JSP+MYSQL的失物招领系统
  13. queue emplace_c++ queue、deque、priority_queue/队列最大值/滑动窗口/top K
  14. android listview边框颜色,Android实现带有边框的ListView和item的方法
  15. Android 号码, 来电归属地 Jni 使用C++对二进制文件查询(一) 理论篇
  16. sqlite的数据库文件在什么地方? sqlite数据库文件后缀名,提取方法,打开方法。
  17. access 的几种更新语句:update where 与 update join where
  18. 什么是爬虫?你了解吗,能干什么,怎么用,让你了解本质
  19. unity 烘焙模式——baked indirect/shadow mask/distance shadowmask/subtractive模式的区别
  20. 分布式系统技术难题--异地多活

热门文章

  1. 旧路由器不要扔,可当电脑无线网卡使用,你还不知道吧!
  2. 三分屏课件打包器远程教育版(V1.0)
  3. 如何利用SOLIDWORKS制作螺丝
  4. 4星|《小群效应》:移动互联网时代,社群的数据与分析
  5. Golang通脉之结构体
  6. 如何有效延长笔记本电池使用时间?
  7. python数据可视化—用pyecharts画雷达图
  8. 超分辨论文阅读笔记:SAN
  9. 小米前员工创办TAKI喜克品牌已被维刻收购
  10. 银行实时汇率查询易语言代码