某会务组根据参会者提交的入住宾馆和到达指定上车点时间的信息,安排车辆接送参会者去宾馆。不同宾馆的参会者分开接送,同一宾馆的参会者可同乘一辆车,每辆车最多接送v人,每个参会者的等待时间都不超过w分钟。参会者人住的宾馆和到达上车点的时间用长度为7的字符串表示,例如“A-09:15”表示参会者当天入住A宾馆,9点15分到达上车点,如果w为10,那么该参会者最晚9点25分出发:去宾馆。
编写VB程序,统计接送n个参会者所需的最少车辆数。运行程序,列表框List1中按入住宾馆分组显示所有参会者提交的信息,同一宾馆的按时间先后排列。单击“统计”按钮Command1,在文本框Text1中显示所需的最少车辆数。程序运行界面如图所示。
(1)
如图所示,如果每辆车最多接送4人,每个参会者的等待时间不超过10分钟,接送所有到A宾馆的参会者最少需要辆车。
(2)
实现上述功能的部分VB程序如下,请在划线处填入合适的代码。
'n、v、w是常量
'n为参会人数,v为每辆车最多接送人数,w为参会者最长的等待时间,代码略
Private Sub Form_ Load()
'读取n个参会者提交的信息,依次存入a(1)~a(n)
'将a(1)~a(n)接入住宾馆分组,同一宾馆参会者按时间先后排序
'并在List1中显示,代码略
End Sub
Private Sub Commandl_Click()
Dim i As Integerj As Integer, sum As Integer
a(n+1)=" "
j=1: sum = 0
For i-2 To n+ 1
If Mid(a(i), 1, 1)< Mid(a(j),1,1)Then
j=i
End If
Next i
Text1. Text = Str(sum)
End Sub
Function getDif(tsl As String, ts2 As String) As Integer
'返回ts1到ts2的时长(单位:分钟),代码略
'例如ts1为"08:30",ts2 为"08:35",则返回的函数值为5
End Function
Function getCnt(first As Integer, last As Integer) As Integer
Dim s1 As String, s2 As String
Dim iAs Integer, p As Integer, k As Integer,t As Integer
p= first:k= 1
s1 = Mid(a(first), 3, 5)
For i= first+1 To last
s2 = Mid(a(i), 3, 5)
t= getDif(s1, s2)
If Then
k=k+1
p=i
End If
Next i
getCnt= k
End Function
答案: 【1】3
【1】sum=sum+getCnt(j, i-1) 或其他等价答案【2】i-p+1>v Or t>w或i-p=v Or D>w 或i-p>=v Or t>w或其他等价答案【3】s1=s2或s1=Mid(i), 3, 5)或s1=Mid(a(p), 3, 5) 或其他等价答案