最长不下降序列(动态规划)

这是一篇关于计算最长不下降子序列问题的文章,使用动态规划方法求解。文章详细介绍了问题描述、输入输出格式,并给出了思路点拨和倒推代码,帮助理解如何通过状态转移方程找到序列长度及一组最长子序列。
摘要由CSDN通过智能技术生成

最长不下降序列
查看 提交 统计 提问
总时间限制: 1500ms 内存限制: 65536kB
描述
设有由n个整数组成的数列,任意删掉若干后剩下的数列成为子序列。
如果子序列是严格不递减的,则成为不下降子序列。
求该数列的最长不下降子序列的长度。
并输出一组一组符合要求的最长子序列。
输入
两行
第一行n(1≤n≤10000)
第二行n个数,用空格隔开,范围均在(-1000到1000之间)
输出
两行
第一行:最长子序列长度
第二行:符合要求的一组最长子序列,两个数之间用空格隔开,行末不含空格
样例输入

14
3 7 9 16 38 24 27 38 44 49 21 52 63 15

样例输出

11
3 7 9 16 24 27 38 44 49 52 63

提示
dp

思路点拔:首先,本题是一道经典dp,不管是最长不下降序列,还是什么序列,状态转移方程都是f[i]=max(f[j]+1,f[i]),只是判断条件不相等,我就不全列举了,本题的判断条件为v[i]>=f[j],这样,长度就能对,但是&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值