给定一个由 nn个整数组成的序列 AA。找到最大的 k有一个索引序列 满足不等式a≤a2≤ak
例如,序列 A=(5 3 2 4 6 1) 具有最长的递增子序列 (3 4 6) 和 (2 4 6)
数据输入例子解释
第一个输入行包含一个整数 n(1≤n≤2000),A中的元素个数。
第二个输入行包含 n 个整数 ai(1≤ai ≤1000)
数据输出解释
打印一个整数 k,即最长递增子序列的长度。
用Python实现编写满足图片和任意的例子,输出打印一个整数 k,输出给定数列的最长递增子序列的长度
数据输入第一行使用 n= int(input())
第二行使用li = input().split()接收任意参数
最后输出打印满足任意条件的结果
那我来个优化的,动态规划的
def lengthOfLIS():
n = eval(input())
nums = list(map(int,input().split()))
dp = [1 for _ in range(n)] # 动态转换数组
max_length = 1 # 最短一个词长度为1不是0
for i in range(1,n):
for j in range(i):
if nums[i]>nums[j]: # 代表遍历到当前为递增,可以加入
dp[i] = max(dp[i],dp[j]+1) # 判断是之前的大,还是现在dp[j]加了1大
max_length = max(dp[i], max_length) # 当前的长度的最大值和全局长度最大值比较
print(max_length)
lengthOfLIS()
n= int(input())
li = input().split()
li = list(map(int,li))
res = []
for i in range(len(li)):
res.append([li[i]])
for j in range(i+1,len(li)):
if li[j]>res[-1][-1]:
res[-1].append(li[j])
#print(res) #查看所有递增子序列
print(max(len(i) for i in res))
学习