python - 如果矩阵中有 3 个可能的值,如何找到最短路径?
问题描述
我试图找到以下问题的算法,但无法获得完整的解决方案。
在一个大小为 (100,100) 的矩阵中,每个值可以是 -- 0 - 打开,1 - 阻止,2 - 用金币打开,
矩阵中的金币数量可以在 0 到 10 之间。
A 位于起始位置 (0,0),B 位于矩阵中的位置 (m,n)。
任务是找到 A 可以遵循的最短路径来收集所有金币并将它们交付给 B。A 可以移动北、南、东或西。
下面是我试过的代码(迷宫是矩阵,B是B的位置)--
def democode(maze, B):
#with some initialization over here
while len(queue) != 0:
i,j=queue.pop(0)
result+=1
for m,n in getneighbors(i,j):
if (0<=m<rows) and (0<=n<cols):
if m == B[0] and n == B[1]:
break
if maze[m][n] != 1 and visited[m][n] == 0:
queue.append((m,n))
visited[m][n] = 1
return result
该解决方案没有考虑确保 A 在到达 B 之前收集所有金币的问题。需要一些改进此代码以涵盖所有场景的建议。
解决方案
推荐阅读
- spring - 同一测试中的不同控制器
- arrays - 遍历非连续列
- javascript - 使用 NodeJS 读取 PDF 并在客户端呈现上下文
- mysql - 选择和使用两个表(更详细的解释在帖子中)
- excel - Excel - 如何获得最后一个由数字和“N/A”随机混合组成的行中最后 10 个值的平均值
- ios - 在苹果商店添加评论信息截图?
- wordpress - Elementor 小部件分离问题
- python - “!”是什么意思?在python中登录吗?或者它是一个Linux commad?
- javascript - MongoDB:你可以将一个集合作为一个字段包含在另一个集合的文档中吗?
- angular - 无法在 ngForm 中初始化 ng-select