我们可以计算最小成本假设采取这种递归关系
分钟(垫[I-1] [j]时,垫[i] [j-1])+垫[i] [j];
0 1 2 3
4 5 6 7
8 9 10 11
使用上述递推关系计算最小成本,我们将得到最小成本(1,2)= 0 + 1 + 2 + 6 = 9
我得到最低成本金额,这没有问题..现在我想打印元素0,1,2,6 bcz这个元素正在制作最小成本路径。
非常感谢任何帮助。
答案 0 :(得分:0)
除了使用您提到的关系计算最小成本矩阵外,您还可以创建前置矩阵。
对于每个单元格(i,j),您还应该存储有关谁是" min"的信息。在你提到的关系中(是左边的元素,还是上面的元素?)。通过这种方式,您将了解每个单元格,它是最佳路径中的前一个单元格。
然后,你可以从最后一个单元格开始生成路径,然后根据"前身"矩阵,直到你到达左上角的单元格。
请注意,在不明确构建前置矩阵的情况下,也可以应用后向思想。在每一点上,您都需要查看哪些候选前辈的总成本较低。
答案 1 :(得分:0)
假设您的端点为[x, y]
,起点为[a, b]
。在递归步骤之后,现在从端点开始并爬行/回溯到起始点。
这是伪代码:
# Assuming grid is the given input 2D grid
output = []
p = x, q = y
while(p != a && q != b):
output.add(grid[p][q])
min = infinity
newP = -1, newQ = -1
if(p - 1 >= 0 && mat[p - 1][q] < min):
min = matrix[p -1][q]
newP = p - 1
newQ = q
if(q - 1 >= 0 && mat[p][q - 1] < min):
min = mat[p][q - 1]
newP = p
newQ = q - 1
p = newP, q = newQ
end
output.add(grid[a][b])
# print output
注意,这里我们使用了mat
和grid
- 两个2D矩阵,其中grid
是给定输入,mat
是递归步骤{{1}之后生成的矩阵}}
希望它有所帮助!