我找到了一个不超过指定成本的最快路径的问题.
假设我已经指定了最高成本和4条记录.
// specified cost
10
// end point
5
//(start point) (finish point) (time) (cost)
2 5 50 5
3 5 20 9
1 2 30 5
1 3 30 7
我必须决定,是否有可能从第(1)点到第(5)点(当没有路径成本< =比我们得到的或当1-5之间没有连接时)它是不可能的,如果是这样的话,什么是最快的进入那里. 这些数据的输出将是:
80 // fastest time
3 1 // number of points that (1 -> 2) -> (2 -> 5)
请记住,如果有记录说你可以移动1-> 2
1 2 30 5
它不允许你移动2 <-1.
最佳答案 使用动态编程,如下所示:
Route(node, length, target, accumulated)
if length <= 0 return -1
if node == target return accumulated
For each adjacent node:
current length = accumulated + Route(adjacent node, length - connecting edge weight, target, accumulated + connecting edge weight)
min length = min(current length, min length)
return min length