無重疊區(qū)間。在若干個區(qū)間中,刪除重復區(qū)間,使得剩余區(qū)間互不重疊(區(qū)間[1,2]和[2,3]雖有邊界值2相等,但不認為是重疊區(qū)間)。小李設計VB程序,在文本框Textl中輸入用逗號分隔的整數(shù),相鄰兩個整數(shù)表示一個區(qū)間(任意區(qū)間的左邊數(shù)據(jù)小于右邊數(shù)據(jù))。如圖中所示為區(qū)間[1,2],[2,3],[3,4],[2,4]。點擊“判斷”按鈕Command1后,刪除重復區(qū)間[2,4],在文本框Text2輸出滿足無重復區(qū)間時需要刪除的最小區(qū)間數(shù)量。運行界面如圖所示。
(1)若輸入的區(qū)間集合為[2,4],[1,3],[3,4],[5,6],則需要刪除區(qū)間的最小數(shù)量為
1
1
。
(2)實現(xiàn)上述功能的VB程序如下,請在橫線處填入合適的代碼。
Private Sub Command1_Click ____
Dim a(1 To 100)As Integer
Dim i As Integer,j As Integer
Dim temp As Integer,k As Integer
Dim res As Integer,ed As Integer
'從文本框Textl中依次讀入整數(shù)存儲到數(shù)組a中,整數(shù)的個數(shù)存放在變量k中,代碼略.
For i=1 To k\2-1'以區(qū)間左邊數(shù)據(jù)為主要關鍵字升序排序
For j=k\2 Toi+1 Step-1
If ①
a((j-1)*2-1)>a(j*2-1)
a((j-1)*2-1)>a(j*2-1)
Then
temp=a(j*2-1):a(j*2-1)=a((j-1)*2-1):a((j-1)*2-1)=temp
temp=a(j*2):a(j*2)=a((j-1)*2):a((j-1)*2)=temp
End If
Next j
Next i
ed=a(2)
res=0
For i=2 To k\2'計算需要刪除區(qū)間的最小數(shù)量
If ②
a(i*2-1)<ed
a(i*2-1)<ed
Then
res=res+1
ed=min(ed,③
a(i*2)
a(i*2)
)
Else
ed=a(i*2)
End If
Next i
Text2.Text=Str(res)
End Sub
Function min(x As Integer,y As Integer)As Integer'函數(shù)功能:返回x與y的最小值
'代碼略
End Function