/* Name: poj 3356 AGTC Author: UnimenSun Date: 17/05/2011 16:25 Description: LCS变形 */ /* 解题报告:LCS的变形 要求结果 = 串2的长度 - 两串的LCS */ #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 1010; char szLine1[MAXN], szLine2[MAXN]; short dp[2][MAXN]; int n1, n2; int main() { int i, j; while(scanf("%d %s %d %s", &n1, szLine1+1, &n2, szLine2+1) != EOF) { int len1 = strlen(szLine1+1); int len2 = strlen(szLine2+1); memset(dp, 0, sizeof(dp)); for(i=1; i<=len1; ++i) { for(j=1; j<=len2; ++j) { if(szLine1[i] == szLine2[j]) { dp[i%2][j] = dp[(i-1)%2][j-1] + 1; } else { dp[i%2][j] = _cpp_max(dp[(i-1)%2][j], dp[i%2][j-1]); } } } printf("%d/n", n2-dp[len1%2][len2]); } return 0; }