当前位置: 高中信息技术 / 综合题
  • 1. (2022·浙江模拟) 某城市有一条横贯东西的大河,河有笔直的南北两岸,岸上有位置各不相同的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) 南岸城市标签显示“1,2,3,4,5,6,7,”,文本框Text1中输人“3,1,2,5,6,4,7,",最多批准申请数是个。
    2. (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

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