无重叠区间。在若干个区间中,删除重复区间,使得剩余区间互不重叠(区间[1,2]和[2,3]虽有边界值2相等,但不认为是重叠区间)。小李设计VB程序,在文本框Text1中输入用逗号分隔的整数,相邻两个整数表示一个区间(任意区间的左边数据小于右边数据)。如图中所示为区间[1,2],[2,3],[3,4],[2,4]。点击“判断”按钮Command1后,删除重复区间[2,4],在文本框Text2输出满足无重复区间时需要删除的最小区间数量。运行界面如图所示。
(1)
若输入的区间集合为[2,4],[1,3],[3,4],[5,6],则需要删除区间的最小数量为。
(2)
实现上述功能的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
'从文本框Text1中读入整数存储到数组a中,整数的个数存放在变量k中,代码略
For i=1 Tok\ 2-1 '以区间左边数据为主要关键字升序排序
For j=k\2 To i+1 Step-1
If 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 '计算需要删除区间的最小数量
If Then
res=res+1
ed=
min(ed, )
Else
ed=a(i * 2)
End If
Next i
Text2. Text= Str(res)
End Sub
Function min(x As Integer, y As Integer) As Inte-ger '函数功能:返回x与y的最小值
'代码略
End Function
答案: 【1】1
【1】a((j- 1)*2- 1)> a(j*2-1)【2】a(i*2-1)<ed【3】a(i*2)