为了账号安全,请及时绑定邮箱和手机立即绑定

在 2d 阵列中查找最短路径

在 2d 阵列中查找最短路径

青春有我 2022-08-17 17:09:14
我需要找到从左上角到右下角的最短路径。规则是它必须从A到B到A到B等。例如,见图片:上图的预期输出为 13。我试图用一个dijkstra算法在java中实现这一点,但后来卡住了。这是正确的方法吗?
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

如果目标是找到从左上角到右下角(或任何任意2点之间)的最短路径,dijsktra是一种可能的方法,但是您必须从输入正确构造图形。

在这种情况下,我会选择一个简单的算法。您可以找到几个在线资源来解释它,包括此视频本文,因此我不会在此答案中详细介绍。flood-fill

如果您正确实施了规则(仅 A 到 B 和 B 到 A),则可以仅使用 2 个矩阵(一个用于原始字母数组,一个用于距离)找到最短路径。


查看完整回答
反对 回复 2022-08-17
?
富国沪深

TA贡献1790条经验 获得超9个赞

您可以使用任何图形遍历算法或任何寻路算法。T,这里有很多算法,如A *,Dijekstra,BFS,DFS ...

例如,让我们以BFS为例,它查找图形的2个节点之间的最短路径。假设您的 2d 数组是一个图形,如果 2 个节点之间的距离为 1 且其中一个节点为 A,第二个节点为 B https://en.wikipedia.org/wiki/Breadth-first_search,则边缘处于状态。)

只需从矩阵构造图形并为图形实现 BFS,或者您可以简单地为数组实现 BFS。


查看完整回答
反对 回复 2022-08-17
  • 2 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信