蓝桥杯py组入门(bfs广搜)

7. 走迷宫

7.走迷宫 - 蓝桥云课

题目描述

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

已知迷宫的入口位置为 (x1​,y1​),出口位置为 (x2​,y2​)。问从入口走到出口,最少要走多少个格子。

输入描述

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

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

最后一行输入四个整数 x1​,y1​,x2​,y2​,表示入口的位置和出口的位置。

1≤N,M≤10^2,0≤Gi,j≤1,1≤x1,x2≤N,1≤y1,y2≤M。

输出描述

输出仅一行,包含一个整数表示答案。

若无法从入口到出口,则输出 −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

很标准的广搜,深搜的话会爆时间

代码

python 复制代码
import queue

N = 110
g = [[-1] * N for _ in range(N)]
dist = [[-1] * N for _ in range(N)]
d = [[1,0],[0,1],[-1,0],[0,-1]]

n, m = map(int,input().split())
for i in range(1, n + 1):
  g[i][1 : m + 1] = list(map(int,input().split()))
x1, y1, x2, y2 = map(int,input().split())

def bfs():
  q = queue.Queue()
  q.put([x1, y1])
  dist[x1][y1] = 0

  while not q.empty():
    x, y = q.get()

    if x == x2 and y == y2:
      return dist[x2][y2]

    for i in range(4):
      nx = x + d[i][0]
      ny = y + d[i][1]
      if nx < 1 or nx > n or ny < 1 or ny > m:
        continue
      if g[nx][ny] == 1 and dist[nx][ny] == -1:
        dist[nx][ny] = dist[x][y] + 1
        q.put([nx, ny])
  return -1

t = bfs()

print(t)

加油

相关推荐
aqiu1111112 小时前
【LeetCode 902】最大为 N 的数字组合 - 详细题解与数位组合思路
数据结构·算法·leetcode·蓝桥杯·数位dp
2601_962293792 小时前
OCRmyPDF批处理脚本:使用Python自动化复杂OCR任务
python·自动化·批处理脚本·ocrmypdf·ocr任务
Java后端的Ai之路3 小时前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
2601_962077714 小时前
基于Python与NLP的新闻事件信息抽取实战:从NER到时空标准化
python·nlp·transformers·spacy·新闻事件抽取
JavaPub-rodert4 小时前
LangChain 从入门到 Agent 实战:用 Python 搭建一个真正能调用工具和知识库的 AI 助手
人工智能·python·langchain
郝学胜-神的一滴5 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生
m0_380743876 小时前
给 OpenAI API 调用加上模型切换:GPT-5.1 和 Codex 的配置实践
人工智能·python·gpt
2601_962297486 小时前
在python3中、下列输出变量a的正确写法是_2020超星大数据Python免费答案
数据结构·python·算法·编程·字符串操作
“AI国潮设计-小江”6 小时前
Python实战 | SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc
公爵爱学习6 小时前
无人机视觉识别前序-Linux-YOLO安装
python·yolo·计算机视觉·conda·无人机