# Author : luoxijixian # Createtime : 2023/1/8 # Filename : 题目 2124 信息学奥赛一本通T1259-求最长不下降序列 # Description : simple introducyion of the code n=int(input()) A=list(map(int,input().split())) def LIS(A,n): A=[-1]+A L=[0]*(n+10)#初始化,不用下标为0的数组 P=[-1]*(n+10) max=0 max_index=0 for i in range(1,n+1): k=0 for j in range(1,i): if A[j]<=A[i] and L[j]>=L[k]:#A[j]L[k],标准应该是不加=,但是过不了 k=j L[i]=L[k]+1 P[i]=k if(L[i]>max): max=L[i] max_index=i i=max_index print(f"max={L[i]}") ans=[] while(i!=0):#不能写成P【i】!=0,否则会形成P【P【i】】的嵌套 ans.append(A[i]) i=P[i] ans.reverse() print(*ans) LIS(A,n)
点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

luoxijixian 2年前 回复TA
Python代码:
n=int(input())
A=list(map(int,input().split()))
def LIS(A,n):
    A=[-1]+A
    L=[0]*(n+10)
    P=[-1]*(n+10)
    max=0
    max_index=0
    for i in range(1,n+1):
        k=0
        for j in range(1,i):
            if A[j]<A[i] and L[j]>L[k]:#A[j]<=A[i];L[j]>=L[k]
                k=j
        L[i]=L[k]+1
        P[i]=k
        if(L[i]>max):
            max=L[i]
            max_index=i
    i=max_index
    print(f"max={L[i]}")
    ans=[]
    while(i!=0):#不能写成