最长公共子序列C++代码实现
时间: 2023-08-12 13:13:44 浏览: 100
以下是最长公共子序列的 C++ 代码实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int lcs(string X, string Y, int m, int n)
{
int L[m+1][n+1];
for (int i=0; i<=m; i++)
{
for (int j=0; j<=n; j++)
{
if (i == 0 || j == 0)
L[i][j] = 0;
else if (X[i-1] == Y[j-1])
L[i][j] = L[i-1][j-1] + 1;
else
L[i][j] = max(L[i-1][j], L[i][j-1]);
}
}
return L[m][n];
}
int main()
{
string X = "AGGTAB";
string Y = "GXTXAYB";
int m = X.length();
int n = Y.length();
cout << "Length of LCS is: " << lcs(X, Y, m, n) << endl;
return 0;
}
```
输出结果为:
```
Length of LCS is: 4
```
其中,L[m+1][n+1]表示长度为 m 和 n 的两个字符串的最长公共子序列的长度,X[i-1]表示第一个字符串 X 的第 i 个字符,Y[j-1]表示第二个字符串 Y 的第 j 个字符。
阅读全文