1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include <iostream> #include <string> #include <vector> #include <algorithm>
using namespace std;
int LCS(string a, string b) { int la, lb; la = a.length(); lb = b.length(); vector<vector<int>> c(la + 1, vector<int>(lb + 1, 0));
for (int i = 1; i <= la; i++) for (int j = 1; j <= lb; j++) { if (a[i - 1] == b[j - 1]) c[i][j] = c[i - 1][j - 1] + 1; else c[i][j] = max(c[i - 1][j], c[i][j - 1]); }
return c[la][lb]; }
int main() { string a, b; while (cin >> a >> b) { cout << LCS(a, b) << endl; } return 0; }
|