这个问题的一个变种......
在cost[][]
中给出费用矩阵(m, n)
和位置cost[][]
,编写一个函数,返回(m, n)
到达(0, 0)
的最低费用路径费用。矩阵的每个单元表示遍历该单元的成本。到达(m, n)
的路径的总费用是该路径上所有费用的总和(包括来源和目的地)。您只能遍历,向右和对角线降低给定单元格中的单元格,即来自给定单元格(i, j)
,单元格(i+1, j)
,(i, j+1)
和(i+1, j+1)
可以遍历< / p>
如果我们被允许在所有可能的方向上进行遍历而不是在这里允许的三个方向。现在如何解决这个变种.. 我试着想回溯,但它不起作用.. 任何想法!!!!!!!!!
答案 0 :(得分:0)
这是加权图表中的shortest path problem,可由Dijkstra's Algorithm解决(如果所有费用均为正数)或Bellman-Ford Algorithm。
在此处,图表为G=(V,E)
,其中V={(x,y) | (x,y) is a cell in the matrix}
和E={(u,v) | can move from cell u to cell v}
。
你的体重功能将是
对于图表中的每个边缘都是w((x1,y1),(x2,y2)) = cost[x2][y2]
。
请注意,如果图形具有“负循环”,则两种算法都将失败 - 因为在此类图形中不存在最小成本。