题目

某地区有8个城市爆发疫情,需要发放救援物资。各城市的相邻关系用0表示不相邻,1表示相邻。例如:图a的邻接矩阵对应关系图如图b所示。 救援物资一共有4种(第1种口罩、第2种酒精、第3种防护服、第4种耳温枪),每个城市仅能分配到1种物资,要求相邻城市所分配到的救援物资各不相同。 算法分析:采用试探法分配物资(每个城市都从第1种物资开始逐个试探)。 第i个城市能否分配第c种物资,关键取决于第i个城市的周边是否有分配到相同物资的城市。如果已有相邻城市分配到第c种物资,则换第c+1种物资,否则就将第c种物资分配给第i个城市,继续探索第i+1个城市。 如果第i个城市,4种物资都无法分配到,则退回到第i-1个城市,调整第i-1个城市的物资,重新试探下一种物资。直至所有城市的救援物资都分配好。 例如:给城市1分配第1种物资,然后给第2个城市分配物资时,也从第1种物资开始试探,若发现第1种物资已分配给相邻城市,则试探第2种物资,以此类推。 小金同学编写VB程序实现上述功能:程序运行时,各城市之间相邻关系矩阵显示在列表框List1中。单击“分配”按钮Command1,在列表框List2中显示物资分配方案。程序运行界面如图c所示,请回答下列问题。 图c (1) 若按照上述算法,8个城市的相邻关系矩阵图如图 a、图 b所示,则城市 8所分配到的物资是(填:口罩/酒精/防护服/耳温枪) (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。 Private Sub Command1_Click() Const n = 8 Dim a(1 To n * n) As Integer, t(1 To n) As Integer, Dim w(1 To 4) As String Dim c As Integer, i As Integer, j As Integer,Dim f As Boolean w(1) = "口罩": w(2) = "酒精": w(3) = "防护服": w(4) = "耳温枪" ‘读取8个城市的邻接矩阵对应关系,存入a数组中,并显示在列表框List1中,代码略 c = 1 t(1) = c i = 2 Do While    For j = 1 To i - 1     If Then       Exit For     End If   Next j   If j < i Then     c = c + 1     Do While c > 4       i = i - 1       If i = 0 Then         List2.AddItem "no answer"         Exit Sub       End If       c =      Loop   Else     t(i) = c     i = i + 1     c = 1   End If Loop List2.Clear For i = 1 To n   List2.AddItem "城市" & i & ":" & w(t(i)) Next i End Sub 答案: 【1】酒精 【1】c <= 4 And i <= n 或i <= n【2】a((j - 1) * n + i) = 1 And t(j) = c (2 分) 或 a((i - 1) * n + j) = 1 And t(j) = c【3】t(i) + 1
信息技术 试题推荐
最近更新