最长公共子序列问题c++
时间: 2023-08-03 07:32:43 浏览: 109
以下是 C++ 代码实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int longest_common_subsequence(string s1, string s2) {
int m = s1.length();
int n = s2.length();
int dp[m+1][n+1];
memset(dp, 0, sizeof(dp));
for(int i=1; i<=m; i++) {
for(int j=1; j<=n; 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[m][n];
}
int main() {
string s1 = "abcde";
string s2 = "ace";
int result = longest_common_subsequence(s1, s2);
cout << result << endl; // 输出 3
return 0;
}
```
需要注意的是,在 C++ 中需要包含头文件 `<cstring>` 来使用 `memset` 函数。
阅读全文