车上最重货物的重量*0.8+车上其余货物的总重量
已知每个站点所需运送的货物的重量和目标站点,小明编写了一个VB程序计算货车从1号站点到达第n号站点的货运费用总额,程序运行界面如图所示。
算法提示:为提高算法效率,小明使用数组d和数组q按货物送达目标站点的先后厢序的顺序记录相关信息。第x件送达站点的货物的序号为d(x),该货物送达目标站点时本上最重的货物的重量为q(x)。
若各个站点货物的送达站点和重量信息如图所示,货车到达各个站点时数组d和数组q的状态如下。
站点1出发 数组d: 1 数组q: 5 将第1件货物 信息保存 下一站费用:5*0.8=4 | 到达站点2 2、1 7、5 放货物2 最重重量为7 7*0.8+5=10.6 | 到达站点3 2、3、1 7、5、5 货物2下车 放货物3 最重重量为5 5*0.8+3=7 | 到达站点4 2、3、1、4 7、5、10、10 货物3下车 放货物4 最重重量为10 10*0.8+5=13 |
合计费用:4+10.6+7+13=34.6

(1)若有4个站点,货物送达站点顺序为4、3、4,重量分别为9、7、10,则费用合计
(2)请在划线处填入合适的代码。
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每个站点的送达站点和货物重量,依次存放在数组f和数组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
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
Labell.Caption = “共需费用:” + Str(ans)
End Sub

同类型试题

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2


y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

