最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

VB_Python代码对照算法百题(025)

Python 少儿编程 2128浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

 VB代码:(2018年8月金丽衢12校)17.【加试题】数组a()中相邻两个数据无重复,现要查找连续最大步长的升序段。具体描述如下:

 (1)步长指的是升序段中最后元素和最初元素的差值;

 (2)有相同步长的升序段则输出最先找到的升序段。
程序界面如第17题图所示。

VB_Python代码对照算法百题(025)实现上述功能的 VB 代码如下:
Dim a(100) As Integer ‘用来存放数据
Dim k As Integer ‘用来存放数据的数组元素的个数
Private Sub Form
Load()
‘从数据库中读取数据并存储在相关数组变量中。并将数据输出在文本框中。
Text1.Text = s
End Sub
Private Sub Command1_Click()
Dim flag As Boolean, pmax As Integer, mstep As Integer, steps As Integer, max As Integer, st As String , tmax As Integer

st = “” : pmax = 1 : mstep = 0 : max = 0 : t = 0 : tmax = 0

If a(2) > a(1) Then flag = True Else flag = False

For i = 1 To k – 1

    If a(i + 1) > a(i) Then

        If flag = True Then

                   

            t = t + 1

            If mstep > max Then

                max = mstep

                pmax = i + 1

                       

            End If

        Else

            mstep = a(i + 1) – a(i)

            t = 1

            If mstep > max Then

                max = mstep

                pmax = i + 1

                tmax = 1

            End If

            flag = True

        End If

    Else

               

    End If

Next i
For i = pmax – tmax To pmax

    st = st + Str(a(i))
Next i
List1.AddItem st
End Sub

(1)若数据为“24 7 2 16 25 68 45 32 2 23 46 67 26 ” 则最大步长的升序段为         。(1分)
(2)实现上述功能,请在划线处填入适当的代码:
程序中①处填入的是         。(2分)
程序中②处填入的是         。(2分)
程序中③处填入的是         。(1分)

参考答案:

(1)2 16 25 68(1分)
(2)程序中①处填入的是 mstep = mstep + a(i + 1) – a(i) (2分)
程序中②处填入的是 tmax = t (2分)
程序中③处填入的是 flag = False (1分)

Python代码如下:

a=[25,13,9,14,28,34,39,58,90,66,55,9,68,73,85,65]
st = “”
pmx = 1
mstep = 0
mx = 0
t = 0
tmx = 0
k=len(a)
if a[1]>a[0]:

    flag=True
else:

    flag=False
for i in range(k-1):

    if a[i+1]>a[i]:

        if flag==True:

            mstep=mstep+a[i+1]-a[i]

            t=t+1

            if mstep>mx:

                mx=mstep

                pmx=i+1

                tmx=t

            else:

                mstep=a[i+1]-a[i]

                t=1

                if mstep>mx:

                    mx=mstep

                    pmx=i+1

                    tmx = 1

            flag = True

    else:

        flag=False
for i in range(pmx – tmx,pmx+1):

    st = st + str(a[i])+’ ‘
print(‘最长步长升序段:’+st)

VB_Python代码对照算法百题(025)

VB_Python代码对照算法百题(025)Python代码运行结果如下:

VB_Python代码对照算法百题(025)

您必须 登录 才能发表评论!