例如有开区间:(7,12)、(10,12),(2,6),(11,15)
(1)排序。按照bi从小到大排序,当bi相同时,按照ai从大到小排序。
排序结果:(2,6)、(10,12)、(7,12)、(11,15)
(2)挑选。第一个区间必选,然后依次选出与前面已选的区间不相交的区间。
挑选结果:(2,6)、(10,12)
根据上述算法描述,设计程序界面如图所示,在文本框Text1中按格式输入原始区间,点击“计算”按钮后,在文本框Text2中按顺序输出最多的没有公共部分的区间。

依据上述描述设计如下VB程序:
Const n=10 '程序最多处理10个区间
Dim a(1 To 2 * n)As Integer
'a(1),a(2)存放第1区间的下限和上限,a(3),a(4)存放第2区间的下限和上限
Private Sub Command1_Click()
Dim i As Integer,j As Integer,k As Integer,c As Integer
Dim pl As Integer,p2 As Integer
Dim s As String
'读取文本框Text1中的区间数据,按要求存入数组a中
s="":ss="":j=1
For i=1 To Len(Textl.Text)
S=Mid(Text1.Text,i,1)
If s>="0"And s<="9"Then
ss=ss+s
Else
If ss<>""Then
a(j)= Val(ss)
ss=""
j=j+1
End If
End If
Next i
'排序
c=(j-1)/2 '区间个数
For i=1 To c-1
k=i
For j=i+1 To c
If ① Or a(2 * k)=a(2 * i)And a(2 * k-1)<a(2 * j-1)Then
k-j
End If
Next jIf k<>i Then
t=a(2 * i-1):a(2 * i-1)=a(2 * k-1):a(2 * k-1)=t
t=a(2 * i):a(2 * i)=a(2 * k):a(2 * k)=t
End If
Next i
'挑选
pl=1:p2=2
res="("+Str(a(1))+","+Str(a(2))+")" '第一个区间必选
Do While p2<=c
If NotIn(pl,p2)Then
res=res+"、("+Str(a(2 * p2-1))+","Str(a(2 * p2))+")"p1= ②
p2=p2+1
Else
p2=p2+1
End If
Loop
Text2.Text=res
End Sub
Function NotIn(m As Integer,n As Integer)As Boolean '检查区间不相交
If ③ Then
NotIn= True
Else
NotIn= False
End If
End Function
请回答下列问题:
(1)对于给定区间(5,9)、(12,17)、(10,20)、(1,5)、(7,9)、(3,6)则选择的第2个区间是________________________________________。
(2)请在划线处填入合适的代码。
①_______________________________
②_______________________________
③_______________________________

同类型试题

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2


y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

