在二维数组中寻找最短路径

Finding shortest path in 2d array

我需要找到从左上角到右下角的最短路径。

规则是必须从 ABAB

以图片为例:

上图的预期输出就是13.

我试图在 java 中使用 dijkstra 算法来实现这个,但后来卡住了。这是正确的方法吗?

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

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

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

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

例如,让我们以 BFS 为例,它找到图中 2 个节点之间的最短路径。假设,您的二维数组是一个图,如果两个节点之间的距离为 1,其中一个节点为 A,第二个节点为 B,则边处于条件状态。请在此处阅读有关 BFS 的模式 (https://en.wikipedia.org/wiki/Breadth-first_search)

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