7. 舟山城市规模较小,人口流动量不大,通常两个完全不认识的陌生人通过2~3个亲戚或朋友的牵线搭桥就可以建立联系。王老师建立了一种人际关系矩阵来模拟这种现象,如有甲,乙,丙,丁,戊,己6人,相互之间认识,在矩阵中用1表示;相互之间不认识,在矩阵中用0表示;对于自身,用0表示,即矩阵左上角到右下角的对角线全为0。如表所示,当前甲和戊不认识,只需通过一人(乙或丁)牵线即可建立联系。
甲乙丙丁戊己
甲011100
乙101011
丙110100
丁101011
戊010100
己010100
王老师设计了一个用来求两个陌生人建立联系所需最少介绍人的VB程序,程序运行时,点击“生成矩阵”按钮Command1,随机产生一个关系矩阵,并在列表框List1中显示。在文本框Text1和Text2中输入两个陌生人的编号,点击“建立联系”按钮Command2,在Labell中输出需要介绍人的最少个数。VB程序运行界面如图所示。
对陌生人pl和p2建立联系的方法:
①pl所在行开始,将其认识的人依次添加到联系人数组b中。
②若数组b中未出现p2,依次搜索下一位联系人所在行,将新出现的认识人添加到联系人数组b中。
③在搜索过程中同时记录搜索步数,数组b内全部搜索完毕,若p2还是未出现,则视为无法建立联系,反之输出介绍人的个数。
程序代码如下:
Const n=8
Dim a(1 To n*n) As Integer
Private Sub Command1_Click()
Dim s As String
List1.Clear
For i=1 To nFor j=i To n
If j=i Then
a((i-1)*n+j)=0
Else
a((i-1)*n+j) = Int(Rnd * 2)
__________
End If
Next j
Next i
For i=1 To ns=""
For j=1 To n
s=s+Str(((i-1)*n+j))
Next j
List1.AddItem s
Next iEnd Sub
Private Sub Command2_Click()
Dim b(1To n) As Integer
Dim ren(1To n) As Integer '记录建立联系的步数
Dim find(1To n) As Boolean '记录某人是否被添加到联系人数组中
Dim p1 As Integer,p2 As Integer,cur As Integer,k As Integer,
q As Integer
p1=Val(Text1.xt)
p2=Val(Text2.Text)
cur=p1:k=1:q=0
find(cur)=True
Do While find(p)=FalseFor i=1 To n
If a( (cur-1)*n+i)=1 And find(i)=False Then
b(k)=i:k=k+1
find(i)=True
_____________
End If
Next i
q=q+1
If q=k Then Exit Do Else_______________
Loop
If find(p2)=True ThenLabel1.Caption="需要"+Str(ren(p2)-1)+"个介绍人"
ElseLabel1.Caption="无法建立联系"
End IfEnd Sub
请回答以下问题:
(1)如图所示的人际关系,要建立2号和5号之间的联系需要的介绍人数最少为_____。
(2)请在划线处填入合适的代码。