链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681

题意:给三个串a,b,c,要求找到一个最长的d串,满足d是a和b的字串,c是d的子序列。

思路:大体是把a,b串分为三个部分,中间一部分是包含c的子串,要想要d最长,所以中间这一截长度要最小,所以这一截的开始要是c[0],结尾要是c[n-1],枚举出这些个位置。假设这个串在a,b中的首尾位置分别为ai,aj,bi,bj,再求出ai,bi之前最长公共子序列的长度dp[i-1][j-1],ai,bi之后最长公共子序列的长度dp[i+1][j+1],答案为这两个公共子序列的长度加上c的长度的最大值。

 posted on 2013-08-17 19:29  ∑求和  阅读(118)  评论(0编辑  收藏  举报