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
| #include<iostream> #include<vector> using namespace std;
int LCSLength(const char* X, int m, const char* Y, int n, vector<vector<int>> &c) { if (m == 0 || n == 0)return 0; else { if (X[m] == Y[n])return LCSLength(X, m - 1, Y, n - 1) + 1; else { int max1 = LCSLength(X, m - 1, Y, n); int max2 = LCSLength(X, m, Y, n - 1); return max1 > max2 ? max1 : max2; } } } int main() { char X[] = { "#ABCBDAB" }; char Y[] = { "#BDCABA" }; int xm = strlen(X) - 1; int yn = strlen(Y) - 1; vector<vector<int>> c; c.resize(xm + 1); for (int i = 0; i < xm + 1; ++i) { c[i].resize(yn+1, 0); } int maxlen = LCSLength(X, xm, Y, yn); }
|