最长公共子序列cpp代码
时间: 2023-07-02 21:06:36 浏览: 84
最长公共子序列代码
下面是一个简单的动态规划实现的最长公共子序列的 C++ 代码:
```
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 1005;
int dp[MAXN][MAXN];
int lcs(string s1, string s2) {
int n = s1.length(), m = s2.length();
memset(dp, 0, sizeof(dp));
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (s1[i - 1] == s2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
return dp[n][m];
}
int main() {
string s1, s2;
cin >> s1 >> s2;
cout << lcs(s1, s2) << endl;
return 0;
}
```
这个算法的时间复杂度是 $O(nm)$,其中 $n$ 和 $m$ 分别是两个字符串的长度。
阅读全文