一位茶叶商人从南方收购了
n 吨新茶,由于产地偏僻不通铁路,茶商准备先沿水路运到武汉,再发往全国各地销售。码头上只有 10 条规格不同的小货船,每条船舶都不足以装载全部茶叶。各船舶的最大载重量分别为
W(i)吨,需 f(i)费用(该艘船每吨的费用)(1≤i≤10)。当然,由于茶商是老主顾,而且货船舶还可以搭配载其他货物,因此船主比较客气,声称可以装一部分货物,按实际装多少货物计费(例如,只装了
1/3 吨,则费用为 1/3*f(i))请问茶商应该选择哪些货船,使得费用最低。若有费用相同,输出用船数最少的。
解题思路:随机生成 10 条船的载重量[1,10]和费用[1,30],然后将它们按费用从小到大排序,若费用相同,则载重大的在前,运输时,先把费用低的船装满,再按费用向下将船装好,运输。
(1)
根据图a所示,可以发现有 (填数字)个对象没有 caption属性。
图 a
(2)
根据上述描述设计如下 VB 程序,请在划线处填入合适的代码。
Dim f(1 To 10)
As Integer, w(1 To 10) As
Integer, b(1 To 10) As
Integer
Private Sub Command2_Click()
Dim n As Integer, count As Integer, yf As Integer
Dim s As String, i as integer
n = Val(Text1.Text)
count = 0
yf = 0
cz = n
i = 1
Do While n > 0
If n >= w(b(i)) Then
Else
yf = yf + n * f(b(i))
End If
count=count+1
s = s + Str(b(i)) + "号船"
i=i+1
Loop
Label2.Caption = "总计费用为:" + Str(yf) +
"元 " + Str(count) + " 条船,分
别为 " + s
End Sub
Private Sub form_load()
Dim t As Integer, i as integer, j as integer
List1.Clear
List1.AddItem "编号 载重 费用'"
For i = 1 To 10
w(i) = Int(Rnd * 10 + 1)
f(i) = Int(Rnd * 30 + 1)
b(i) = i
List1.AddItem Str(b(i)) + " " + Str(w(i))
+ " " + Str(f(i))
Next i
For i = 1 To 9
For j = 10 To i + 1 Step -1
If Then
t = b(j): b(j) = b(j
- 1): b(j - 1) = t
End If
Next j
Next i
End Sub
答案: 【1】2
【1】yf=yf+w(b(i))*f(b(i))【2】n=n-w(b(i))【3】f(b(j))<f(b(j-1)) or f((b(j))=f(b(j-1) and w(b(j))>w(b(j-1))