例如,[1,7,4,9,2]是一个摆动序列,因为差值[6,-3,5,-7]为正负交替出现,如图a所示。但是[2,4,5,2,5]和[2,5,3,3,4]不是摆动序列,其中[2,4,5,2,5]的前两个差值都为正数,如图b所示,而[2,5,3,3,4]的倒数第二个差值为0,如图c所示。图b中②-⑤为递增,⑤-⑧不为递减,因此②-⑤-⑧中需要删除一个数,此外图c中⑤-③为递减,③-③不为递增,因此⑤-③-③中需要删除一个元素。
编写程序,随机生成n个元素的序列,输出该序列中删除元素后最长摆动子序列的长度。
图a 图b 图c
(1)若序列为[3,6,4,4,2,5,7],则该序列删除元素后的最长摆动子序列的长度为
(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
import random
n=int(input())
a=[]
for i in range(①
a. append(random. randint(1,10))
print(a)#输出随机生成的n个元素的序列
pre=0
②
for i in range(0,n-1):
cur=a[i+1]-a[i]
if pre<=0 and cur>0 or ③
cnt+=1
pre=cur
print(cnt)
同类型试题
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2