我需要找到从左上方到右下方的最短路径。
规则必须从 A 到 B 到 A 到 B 等。
以图片为例:
上面图片的预期输出为 13 。
我正在尝试使用dijkstra算法在Java中实现此目标,但后来陷入困境。这是正确的方法吗?
答案 0 :(得分:1)
如果目标是找到从左上角到右下角(或任意2个点之间)的最短路径,则dijsktra是可行的一种方法,但是您必须从输入中正确构建图形。
在这种情况下,我将使用简单的flood-fill
算法。您可以找到一些在线资源对其进行解释,包括this video或this article,因此在此答案中我将不做更多详细介绍。
如果正确实施规则(仅从A到B和从B到A),则仅使用2个矩阵即可找到最短路径(一个矩阵用于原始字母数组,一个矩阵用于距离)。
答案 1 :(得分:1)
您可以使用任何图形遍历算法或任何寻路算法。 T,这里有很多算法,例如A *,Dijekstra,BFS,DFS ...
例如,让我们以BFS为例,它找到了图2个节点之间的最短路径。假设您的2d数组是一个图形,如果2个节点之间的距离为1,其中一个节点为A,第二个节点为B,则边处于条件状态。 >
只需从矩阵构造图并为图实现BFS,或者您可以简单地为数组实现BFS。