最长公共上升子序列(LCIS)
大致题意
给一个数字 n n n,然后再给两个长度为 n n n的数列,求它们的最长公共上升子序列。
思路
下面的vector
都是从1开始存元素的。
普通做法
考虑这样的一个状态 f ( i , j ) f(i,j) f(i,j),这样的一个状态描述为:截止到 j j j(也就是第二个数列)的位置时,在含有第一个数列的前 i i i个数字中最长公共上升子序列的长度。这个过程就是LCS+LIS的思路。
int solve(std::vector<int> &a, std::vector<int> &b) {
std::vector< std::vector<int> > dp(a.size(), std::vector<int> (b.size(), 0));
for (int i = 1; i <