车上最重货物的重量*0.8+车上其余货物的总重量
已知每个站点所需运送的货物的重量和目标站点,小明编写了一个VB程序计算货车从1号站点到达第n号站点的货运费用总额,程序运行界面如图所示。
算法提示:为提高算法效率,小明使用数组d和数组q按货物送达目标站点的先后厢序的顺序记录相关信息。第x件送达站点的货物的序号为d(x),该货物送达目标站点时本上最重的货物的重量为q(x)。
若各个站点货物的送达站点和重量信息如第16题图所示,货车到达各个站点时数组d和数组q的状态如下。
Const n = 100
Dim f(n) As Integer, w(n) As Integer, q(n) As Integer, d(n) As Integer
'数组f保存送达站点,数组w保存货物重量
Dim sum As Integer, ans As Double, i As Integer, st As Integer, t As Integer
Private Sub Form_Load()
'读取1~n每个站点的送达站点和货物重量,依次存放在数组{和数组w中
End Sub
Private Sub Command1_Click()
sum= 0: ans =0: st=1
For i=1 To n- 1
'装载第i站点的货物,更新数组d和数组q
t = w(i)
Do While f(d(k - 1)) > f(i)
d(k)=d(k-1)
q(k)=q(k-1)
If q(k-1)>t Then t=q(k-1)
k=k-1
Loop
d(k) = i
q(k) = w(i)
Do While And k>=st
q(k) = w(i)
k=k-1
Loop
'卸载货物
Do While f(d(st)) = i
sum = sum - w(d(st))
st=st+1
Loop
'计算费用
sum = sum + w(i)
ans= ans + q(st) * 0.8+
Next i
Label1.Caption = "共需费用:" + Str(ans)
End Sub