我是靠谱客的博主 任性黑猫,最近开发中收集的这篇文章主要介绍Python动态规划—最长不降子序列,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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动态规划—最长不降子序列所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部