概述
sd最长不下降子序列: 子序列有很多,求出最长不下降子序列的意思是要求出一个子序列,它是不下降的,并且它在所有不下降的子序列中元素最多,这个最长不下降子序列可能有多个。
实验代码及结果
源代码:
#author_=王晨刚
#data;2020/4/13
def LAS(a):
n = len(a) #表c存放公共子序列的长度,b存放后续的位置,长度为n
c = [0 for i in range(n)] #n个0
b = [-1 for i in range(n)] #n个-1
c[n-1] = 1 #最后一个字符的LAS长度
for i in range(n-1,-1,-1): #倒序从n-1 到0
maxj = 0
for j in range(i+1,n): #j=i+1~n-1
if a[i] < a[j] and c[j] > c[maxj]:
maxj = j #刷新maxj
b[i] = maxj #记录i的后继
#取得从c[i]的长度
c[i] = c[maxj] + 1
return c,b
A =[3,18,7,14,10,12,23,41,16,24]
c,b=LAS(A)
print(c)
print(b)
res=[]
def printLAS(b,A,i):
res.append(A[i])
while b[i]>0:
i=b[i]
res.append(A[i])
print(res)
printLAS(b,A,0)
最后
以上就是任性黑猫为你收集整理的Python动态规划—最长不降子序列的全部内容,希望文章能够帮你解决Python动态规划—最长不降子序列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复