【动态规划-线性结构】最长公共上升子序列-LCIS

一、前言

最近每一天都在恶补DP.......就连做梦都梦到别人跟我说:“你这个DP写得怕是有问题哦?” 我:“······”

但是尽管每天都在恶补DP,依旧深陷一个魔咒:看正解,海阔天空;自己写,波涛汹涌......

所以,一点点总结经典的DP模型和经典例题。/突然严肃

二、题目描述

给定字符串a,字符串b,求a和b的LCIS(最长公共上升子序列)——的长度

(校内OJ-3183)

“求出这个序列”的问题见后_(:з」∠)_

三、分析

本题的关键字:最长+公共+上升+子序列(+长度)

可以看到,这个问题具有相当多的重叠子问题,LIS与LCS也是经典的dp问题。

——>于是,我们想到了DP!

DP核心一:定义状态——F[i][j]表示以a串的前i个字符b串的前j个字符且以b[j]为结尾构成的LCIS的长度

Ps.之前自己没有注意到“以b[j]结尾”,所以盯着方程半天没有反应.../共鸣失败,还好后来看到了,在这里重点强调一下

DP核心二:状态转移方程

我们来考察一下这个这个状态,思考这个状态能转移到哪些状态似乎有些棘手;/它转移给谁?

如果把思路逆转一下,考察这个状态的最优值依赖于哪些状态,就容易许多了。/谁转移到它?</

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值