①将旅行团的旅行时间按照“到达时间”为主要关键字,“返回时间”为次要关键字升序排序。排好序的时间段是[3,6]、[3,8]、[5,10]、[8,15]、[10,18]、[13,18],[14,20]、[18,25].
②从前往后遍历时间段,选择“到达时间”不大于“限流开始时间”的时间段,若有多个时间段满足条件,且时间段未超出限流时间,应选择“返回时间”最大的时间段,选择的时间段是[3,8]。
③缩小限流时间[8,19],重复步骤 2,选择满足条件的时间段是[8,15],缩小限流时间[15,19],重复步骤 2,选择满足条件的时间段是[14,20],结束时间已超过限流终止时间,结束。
④若在遍历时间过程中出现“到达时间”大于“限流开始时间”,景点不能每天接待旅客,则没有满足条件的旅行社。
小王编写VB程序,程序界面如下所示,单击“排序”按钮,将旅行团的时间按照“到达时间”为主要关键字,“返回时间”为次要关键字升序排序,在Text1和Text2中输入限流的起始时间和终止时间,单击“满足条件的旅行团”按钮,在列表框输出满足条件的旅行团的时间,若没有满足条件的旅行社,则在列表框输出“没有满足条件的旅行团!”
回答下列问题:
Dim i As Integer, j As Integer, n As Integer, t As Integer Dim a(100) As Integer, b(100) As Integer
Private Sub Command1_Click()
'将旅行团个数存入n,加载n个旅行团的起始时间、终止时间并分别放在数组a和数组b中,代码略
For i = n to 2 step -1
j=1
Do while
If a(j) > a(j + 1) Or a(j) = a(j + 1) And b(j) > b(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
t = b(j): b(j) = b(j + 1): b(j + 1) = t
End If
j=j+1
Loop
Next i
'输出排好序的时间段,代码略
End Sub
Private Sub Command2_Click()
Dim arrivetime As Integer, leavetime As Integer
start = Val(Text1.Text): ending = Val(Text2.Text)
For i = 1 To n
arrivetime = start
If a(i) <= arrivetime Then
If b(i) > leavetime Then leavetime = b(i): t=i
IfThen
List2.AddItem Str(a(t)) & "---" & Str(b(t)) Exit For
End If
Else
If start < arrivetime or i = 1 Then
List2.Clear
List2.AddItem "没有满足条件的旅行团!"
Exit For
End If
List2.AddItem Str(a(t)) & "---" & Str(b(t))
i = i – 1
End If
Next i
End Sub