某城市有一条横贯东西的大河,河有笔直的南北两岸,岸上有位置各不相同的N个城市。城市按照地理位置先后进行从小到大编号,两岸的部分城市结成--对一的友好城市,即南岸的每个城市有且仅有一个友好城市在北岸,且不同城市的友好城市不能相同。每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,政府决定避免任意两条航道交叉,以避免事故(如图16-1所示),请帮助政府做出一些批准和拒绝申请的决定,使得在保证任意两条航道不相交的情况下,被批准的申请尽量多。
小王设计VB程序如下,在标签.上显示南岸城市的位置序号,例如“1,2,3,4,5,"(两岸城市序号之间用逗号分隔),然后按照南岸城市的顺序在Text1中输入相应的北岸友好城市序号“3,2,4,1,5,”,其中南岸1号城市与北岸3号城市为友好城市,南岸2号城市与北岸2号城市为友好城市,以此类推,单击“分析”按钮,显示最多可批准的申请数量为3个(如图16-2所示),最终政府批准的3条航道为南岸城市2-北岸城市 2,南岸城市3-北岸城市 4,南岸城市5-北岸城市5。
(1)
南岸城市标签显示“1,2,3,4,5,6,7,”,文本框Text1中输人“3,1,2,5,6,4,7,",最多批准申请数是个。
(2)
请在划线处填入合适的代码。
Private Sub Command1_ Click()
Dim b(1 To 100) As Integer 'b(i)表示编号i南岸城市对应的北岸友好城市
Dim c(1 To 100) As Integer
Dim n1, lenc As Integer
Dim i, j As Integer
Dim s1 As String
Dim st, ch As String
Dim flag As Boolean
n1=0
s1 = Text1. Text
st =""
For i = 1 To Len(s1)
ch = Mid(s1, i, 1)
If ch = "," Then
n1 =
n1+1
st =""
Else
st=st+ch
End If
Next i
c(1) = b(1)
lenc = 1
For i=2 To n1
If b(i) > c(lenc) Then
lenc=lenc+1
c(lenc) = b(i)
Else
j=lenc-1: flag=True
Do While j>= 1 And flag
If Then
c(j+1)=b(i)
flag
= Flase
End If
j=j-1
Loop
If j = 0 And flag Then
End If
End If
Next i
Label1. Caption = "最多批准申请数:" + Str(lenc) + "个"
End Sub
答案: 【1】5
【1】b(n1) = Val(st)【2】b(i) > c(j)【3】c(1) = b(i)