17-动规-最长增长子序列

题目

来源

27. 最长增长子序列(第一期模拟笔试)

思路

本题思路参考本人之前的博客:算法-数学与简单DP-895. 最长上升子序列-优快云博客

区别就是在于输入的处理上,核心思路是一样的

代码

# 本题用c++不好写输入,故直接用python
N=int(input())
for _ in range(N):
    s = input()
    L = list(
        map(int, s.replace("[", "").replace("]", "").replace(" ", "").split(",")))
    # print(L)
    f=[0 for _ in range(len(L))]
    res=0
    for i in range(0,len(L)): # 根据倒数第二个不同的数分了i类
        f[i]=1
        for k in range(0,i): # 计算左半部分k的最大值,有i-1个数
            if L[i]>L[k]: # 合法才要计算
                f[i]=max(f[i],f[k]+1)
        res =max(res,f[i])
    print(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值