假设我有一个 n ^ n 矩阵。在每个单元格中都有一个正数,我需要检索权重最低的路径。
路径是从matrix[0][0]
开始并以matrix[matrix.length-1][matrix[0].length-1]
结尾,没有对角线的每条路径。
权重是其单元格中所有数字的数量。
例如,假设我有这个矩阵:
mat = {{1,2},{3,4}};
所以{1,2,4}
是路径,{1,3,4}
是另一个路径。
第一条路径的重量 7 (1 + 2 + 4),第二条路径的重量 8 (1 + 3 + 4),所以该函数将返回 7 。
我需要递归地解决它。伪代码应该是这样的:
if i > matrix.length-1 || i < 0 || j > matrix[0].length-1 || j < 0
//then I passed the borders, so I need to step back.
if i == matrix.length-1 && j == matrix[0].length-1
//Then I reached the last cell, and I need to retrieve sum
然后调用四个递归调用:
public static int smallPath(a, i+1, j, sum);
public static int smallPath(a, i, j+1, sum);
public static int smallPath(a, i-1, j, sum);
public static int smallPath(a, i, j-1, sum);
然后我需要检索一些东西,什么?
我知道这不是最新的,但这是一般的想法,有人可以帮助我解决这个问题吗?谢谢!
答案 0 :(得分:0)
你应该能够使用Dijstra的算法,其中节点是&#34;在&#34;之间。矩阵的细胞和连接由细胞的权重暗示。
如需详细解答,请参阅此问题:Javascript: Pathfinding in a (50000*50000 grid) 2d array?