当前位置: 高中信息技术 / 综合题
  • 1. (2019高三下·浙江月考) 用一个6*5矩阵表示地图,分别用a数组元素表示,第1行从左到右为a(1)到a(6),依次类推,右下角为a(30)。其中数字0表示不通,数字1表示畅通。现在要从左上角到右下角寻找一条畅通的路径。线路规则如下:

    l  路线每个点只能向右或向下

    l  任何一个岔口优先向右走,右侧不通再向下走

    l  一条路线中每个点只能走一次,不能重复

    算法思路:探路过程中,记录每个坐标到数组lu;遇到岔路口(向右向下都通),则记录路口坐标到数组cha;遇到前方无路时,需要返回到上一个路口,标记路口右侧坐标为0;当前方无路,岔路口数组也退回到0,说明整体不通,否则根据规则走到右下为止,最后输出整体线路坐标。

    实现算法的程序如下,运行结果如图所示。

    回答下列问题:

    1. (1) 根据规则,如图迷宫矩阵正确路线的第6个点是a数组的第个元素(填数字)
    2. (2) 在程序划线处填上合适代码,使程序完整。

      Dim a(1 To 50) As Integer

      Private Sub Command1_Click()

          Dim i As Integer, j As Integer, zb As Integer

          Dim cha(1 To 10) As Integer      ‘记录一条线路中各个岔路口坐标

          Dim lu(1 To 10) As Integer        ‘记录路线经过的坐标

          zb = 1: j = 0:  lu(1) = 1: i = 1

          Do While i <= 9      ‘第1个和最后1个固定,中间有9个需要路过的坐标

              If zb Mod 6 <> 0 And a(zb + 1) = 1 Then     ‘向右畅通

                  If zb + 6 <= 30 and a(zb + 6) = 1 Then    ‘记录岔路口

                      j = j + 1

                      

                  End If

                  zb = zb + 1

                  i = i + 1

                  lu(i) = zb

              ElseIf zb + 6 <= 30 And a(zb + 6) = 1 Then    ‘向下畅通

                  zb = zb + 6

                  i = i + 1

                  lu(i) = zb

              Else      ‘坐标退回到上一个岔路口

                  If j = 0 Then Exit Do

                      Do While lu(i) <> cha(j)

                          

                      Loop

                      a(cha(j) + 1) = 0    ‘标记此路口右侧不可用

                      

                      j = j - 1

                  End If

              End If

          Loop

          If j = 0 Then

              Text1.Text = "没有畅通道路"

          Else

              For i = 1 To 10

                  Text1.Text = Text1.Text + Str(lu(i))

              Next i

          End If

      End Sub

      Private Sub Form_Load()

      End If ‘生成图形矩阵的数组a各个元素,并在列表框显示,代码略

      End Sub

微信扫码预览、分享更方便