题型:综合题 题类:常考题 难易度:困难
浙江省Z20名校联盟(名校新高考研究联盟)2022届高三上学期信息技术8月第一次联考(暑假返校联考)试卷
以序列[3,14,7,6,9,12,10,8,13,5]为例,整体不是摇摆序列,但子序列[3,14,7,9]、[3,14,6,12]等都属于摇摆子序列,其中最长的摇摆子序列[3,14,6,12,8,13,5]。根据第16图a分析得知,当序列有一段连续的递增(或递减)时,为形成摇摆子序列,我们只需要找到每一次转折中的拐点元素。
小王编写了一个VB程序实现该功能:程序运行时,从文本框Text1中读入数据,单击按钮Command1后,将计算得到的最长摇摆序列的长度输出到标签Label1中,并将具体的序列输出到文本框Text2中。程序运行界面如图b所示:
Dim a(1 To 20) As Integer
Dim b(1 To 20) As Boolean
Dim ans As String
Private Sub Command1_Click()
Dim i As Integer, flag As Integer, n As Integer
Dim gd As Boolean
'从文本框 Text1读入数据,依次存储到a数组中,数据总数为n
'b数组初值均为False
'代码略
flag = 0 '0代表开始,1代表上升,2代表下降
For i=2 To n
gd = True
If flag = 0 Then
If a(i) >a (i-1) Then
flag= 1
ElseIf a(i) < a(i - 1) Then
flag = 2
Else
gd = False
End If
ElseIf flag = 1 And a(i) < a(i - 1) Then
flag = 2
ElseIf Then
flag = 1
Else
gd = False
End If
Next i
If f(n)<3 then
Label1.Caption =“不构成摇摆子序列”
Else
Label1.Caption =“最长摇摆子序列长度为:”+ Str(f (n))
Text2.Text =“最长摇摆子序列为:”+ ans
End If
End Sub
Function f(n As Integer) As Integer
f = 1: ans=Str(a(n))
For i=n-1 To 1 Step-1
If b(i) Then
f=f+1
End If
Next i
End Function
试题篮