有趣的最低价格问题

时间:2011-01-27 08:47:07

标签: algorithm math

n 巴士站,我们知道第i站和第7站之间的费用。 这是一条单行道。考虑到所有可能的连接,从第1站到第n站的路线的最低价格是多少?时间和内存消耗应尽可能少。

P.S。举个例子,举个例子,有4站。我们有这样一个价格表:

. 3$ 5$ 7$
. .  1$ 3$
. .  .  1$

从第1阶段到第4阶段没有停止我们支付7美元。如果我们改变第二站的路线,我们支付3 $ + 1 $ = 4 $开车到第3站,但如果我们走到最后我们再支付2美元,所以总体来说它将花费6美元,但如果我们再次改变第3站的路线,我们将支付4 + 1 = 5 $。

2 个答案:

答案 0 :(得分:5)

d[i][j]为给定价格,l[k]kn的最低总体费用。然后

l[n] = 0

l[k] = min(d[k][i] + l[i], i=k+1..n)

运行时间为O(n ^ 2)。 (而且,正如@Henrik指出的那样,它是最优的。)

答案 1 :(得分:3)

这是标准加权有向图路径搜索。 Dijkstra的算法找到从源到所有其他节点的最短路径,这是你能做到的最好的。