算法导论 动态规划

 

FASTEST-WAY(a, t, e, x, n)

 1  f1[1] ← e1 + a1,1

 2  f2[1] ←e2 + a2,1

 3  for j ← 2 to n

 4       do if f1[j - 1] + a1,jf2[j - 1] + t2,j-1 + a1,j  如果想把当前任务在line1解决,则要看前一节点是在line1上还是line2上,计算二者的花费,取较小者

 5             then f1[j] ← f1[j - 1] + a1, j

 6                  l1[j] ← 1

 7             else f1[j] ← f2[j - 1] + t2,j-1 + a1,j

 8                  l1[j] ← 2

 9          if f2[j - 1] + a2,jf1[j - 1] + t1,j-1 + a2,如果在line2解决,与line1情况同理。

10             then f2[j] ← f2[j - 1] + a2,j       

11                  l2[j] ← 2

12             else f2[j] ∞ f1[j - 1] + t1,j-1 + a2,j

13                  l2[j] ← 1

14  if f1[n] + x1f2[n] + x2

15      then f* = f1[n] + x1

16          l* = 1

17      else f* = f2[n] + x2

18             l* = 2

 

首先说明一下f1,f2,l1,l2数组的作用。f1[i]中存储的是从起点到line1上的第i个节点的最短距离。同样,f2[i]中存储的是从起点到line2上的第i个节点的最短距离。每次循环进行两对数据的共两次比较。最后根据数组l[i],由后向前,确定最佳路线,或者叫做最佳选择。

后面的几节没细看,暂时不总结了。

 

转载于:https://www.cnblogs.com/bamboo-talking/archive/2011/03/07/1974947.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值