题型:综合题 题类:常考题 难易度:普通
浙江省2020届高三上学期信息技术五校联考试卷
具体算法描述如下:
⑴将文本框Text1中的n个数据依次读取到数组a中;
⑵构造一个数组b(j),j表示升序子序列的长度,b(j)的值表示所有j长度升序序列中最小的末尾元素值。例:序列(2,6,4,5),长度为2的子序列有(2,6)、(2,4)、(2,5)、(4,5),则b(2)=4;
⑶从第1个元素开始,依次处理到第i(1≤i≤n)个元素为止,b数组所能达到的最大下标值maxlen,处理过程分两种情况:
A.a(i)>b(maxlen),则最长升序子序列的长度增加;
B.a(i)<b(maxlen),则在b数组中逆序查找到第一个b(j)>a(i)(maxlen-1≤j≤1),更新数组b中升序子序列长度为j+1时所存储的元素值。
以图中数据为例:
⑷数组b的最大下标值即为最长升序子序列的长度。实现上述过程的VB程序如下,请回答下列问题:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer '存储原序列
Dim b(1 To 100) As Integer '存储各长度序列的最小末尾元素Dim s As String
Dim n As Integer, i As Integer, j As Integer, maxlen As Integer s = Text1.Text
n = 1: j = 1
For i = 1 To Len(s) c = Mid(s, i, 1)
If c = "," Then
a(n) = Mid(s, j, i - j ) n = n + 1
j = i + 1 End If
Next i
maxlen = 1: b(1) = a(1) For i = 2 To n
If a(i) > b(maxlen) Then
maxlen = maxlen + 1 b(maxlen) = a(i)
Else
j = maxlen - 1: flag = True Do While j >= 1 And flag
If a(i) > b(j) Then
flag = False End If
j = j - 1 Loop
IfThen b(1) = a(i)
End If Next i
Label1.Caption = "最长升序子序列的长度为:" + Str(maxlen)
End Sub
请输入多边形的边的数量:4 请输入多边形顶点的横坐标:0 请输入多边形顶点的纵坐标:0 请输入多边形顶点的横坐标:2 请输入多边形顶点的纵坐标:4 请输入多边形顶点的横坐标:3 请输入多边形顶点的纵坐标:5 请输入多边形顶点的横坐标:6 请输入多边形顶点的纵坐标:6 {1: [0, 0], 2: [2, 4], 3: [3, 5], 4: [6, 6]} 多边形的周长为: 17.533908551779625 |
d={} s=0
n=int(input("请输入多边形的边的数量:"))
for i in range(1, ① ):
x=int(input("请输入多边形顶点的横坐标:"))
y=int(input("请输入多边形顶点的纵坐标:"))
d[i]=[x,y] print(d)
j=n
while j>1:
x1=d[j][0]-d[j-1][0]
y1= ①
s=s+(x1**2+y1**2)**0.5
②
s=s+((d[n][0]-d[1][0])**2+(d[n][1]-d[1][1])**2)**0.5
print("多边形的周长为:",s)
试题篮