Dp后的递归输出
输出的忧伤
相信许多同学都有这样的经历:当你兴致勃勃的写出一道Dp题,看到Output中最后一行一串带来恐慌的数字。
心中一想:这道题,多半是算了。
多少个黑夜中的苦刷Dp,以为自己已经握紧了大(D)炮(p)。没想到,最后炮弹无法
Output
别哭,不忧伤。
拯救世界的递归
天空中闪过一道光….
算了,说人话。
我们可以把Dp看作递推的求解。
当我么得到答案时,就可以递归回去输出。
举个例子
题目
给定长度分别为l1,l2的整数序列a[],b[],求出它的最长公共子序列。
状态定义
f[i][j]:在a[1...i]与b[1...j]中的最长公共子序列
状态转移
f[i][j]={f[i−1][j−1]+1max(f[i−1][j],f[i][j−1])a[i−1]=b[j−1]a[i−1]!=b[j−1]
1≤i≤l1,1≤j≤l2
代码
输出
就是把Dp倒过来
自己领悟一下
代码

总结一下
(从不写伪代码,我写的是伪伪代码)

例题和解
LCIS
Thanks for reading!