栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python中获取2D数组中单元格的最短路径

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python中获取2D数组中单元格的最短路径

您可以对此进行简单的广度优先搜索。基本上,网格中的每个单元格都对应图中的一个节点,相邻单元格之间有边。从起始位置开始,并继续扩展可传递单元格,直到找到目标单元格为止。

def bfs(grid, start):    queue = collections.deque([[start]])    seen = set([start])    while queue:        path = queue.popleft()        x, y = path[-1]        if grid[y][x] == goal: return path        for x2, y2 in ((x+1,y), (x-1,y), (x,y+1), (x,y-1)): if 0 <= x2 < width and 0 <= y2 < height and grid[y2][x2] != wall and (x2, y2) not in seen:     queue.append(path + [(x2, y2)])     seen.add((x2, y2))

网格设置和结果:(请注意,我使用的是符号而不是数字,这仅仅是因为以这种方式在视觉上解析网格并验证解决方案更加容易。)

wall, clear, goal = "#", ".", "*"width, height = 10, 5grid = ["..........",        "..*#...##.",        "..##...#*.",        ".....###..",        "......*..."]path = bfs(grid, (5, 2))# [(5, 2), (4, 2), (4, 3), (4, 4), (5, 4), (6, 4)]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659987.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号