有 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 $。
答案 0 :(得分:5)
让d[i][j]
为给定价格,l[k]
从k
到n
的最低总体费用。然后
l[n] = 0
l[k] = min(d[k][i] + l[i], i=k+1..n)
运行时间为O(n ^ 2)。 (而且,正如@Henrik指出的那样,它是最优的。)
答案 1 :(得分:3)
这是标准加权有向图路径搜索。 Dijkstra的算法找到从源到所有其他节点的最短路径,这是你能做到的最好的。