您的位置:首页 > 科技 > IT业 > 房产信息网510_长沙房地产新闻_seo知识分享_湖南竞价优化专业公司

房产信息网510_长沙房地产新闻_seo知识分享_湖南竞价优化专业公司

2024/11/18 16:23:03 来源:https://blog.csdn.net/AuRoRamth/article/details/143359567  浏览:    关键词:房产信息网510_长沙房地产新闻_seo知识分享_湖南竞价优化专业公司
房产信息网510_长沙房地产新闻_seo知识分享_湖南竞价优化专业公司

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

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

代码 

import queueN = 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] = 0while 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:continueif g[nx][ny] == 1 and dist[nx][ny] == -1:dist[nx][ny] = dist[x][y] + 1q.put([nx, ny])return -1t = bfs()print(t)

加油

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com