/* Author: ACboy Date: 2010-5-19 Result: AC Descripition: UVa 10405 Longest Common Subsequence */ #include <iostream> using namespace std; char str[2][1100]; int d[1100][1100]; int get_max(int a, int b) { return a > b ? a : b; } int main() { #ifndef ONLINE_JUDGE freopen("10405.txt", "r", stdin); #endif while (gets(str[0]), gets(str[1])) { int i, j; int len; int len1 = strlen(str[0]); int len2 = strlen(str[1]); len = get_max(len1, len2); for (i = 0; i <= len; i++) { d[0][i] = 0; d[i][0] = 0; } for (i = 1; i <= len1; i++) { for (j = 1; j <= len2; j++) { if (str[0][i - 1] == str[1][j - 1]) { d[i][j] = d[i - 1][j - 1] + 1; } else { d[i][j] = get_max(d[i - 1][j], d[i][j - 1]); } } } cout << d[len1][len2] << endl; } return 0; }