Dp后的递归输出

Dp D p 后的递归输出


输出的忧伤

相信许多同学都有这样的经历:当你兴致勃勃的写出一道 Dp D p 题,看到 Output O u t p u t 中最后一行一串带来恐慌的数字。
心中一想:这道题,多半是算了。
多少个黑夜中的苦刷 Dp D p ,以为自己已经握紧了大( D D )炮(p)。没想到,最后炮弹无法

Output O u t p u t

别哭,不忧伤。


拯救世界的递归

天空中闪过一道光….
算了,说人话。
我们可以把 Dp D p 看作递推的求解。
当我么得到答案时,就可以递归回去输出。

举个例子
题目

给定长度分别为 l1,l2 l 1 , l 2 的整数序列 a[],b[] a [ ] , b [ ] ,求出它的最长公共子序列。

状态定义

f[i][j] f [ i ] [ j ] :在 a[1...i] a [ 1... i ] b[1...j] b [ 1... j ] 中的最长公共子序列

状态转移

f[i][j]={f[i1][j1]+1max(f[i1][j],f[i][j1])a[i1]=b[j1]a[i1]!=b[j1] f [ i ] [ j ] = { f [ i − 1 ] [ j − 1 ] + 1 a [ i − 1 ] = b [ j − 1 ] max ( f [ i − 1 ] [ j ] , f [ i ] [ j − 1 ] ) a [ i − 1 ] ! = b [ j − 1 ]

1il1,1jl2 1 ≤ i ≤ l 1 , 1 ≤ j ≤ l 2

代码

这里写图片描述

输出

就是把 Dp D p 倒过来
自己领悟一下

代码

这里写图片描述

总结一下

(从不写伪代码,我写的是伪伪代码)
这里写图片描述


例题和解

LCIS


Thanks T h a n k s for f o r reading r e a d i n g !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值