帮我写给两个序列,能输出最长公共子序列的代码
时间: 2023-06-07 16:08:08 浏览: 38
好的,以下是能够输出最长公共子序列的代码:
#include <iostream>
#include <cstring>
using namespace std;
int lcs(int* X, int* Y, int m, int n)
{
int L[m + 1][n + 1];
int i, j;
for (i = 0; i <= m; i++)
{
for (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]);
}
}
}
int index = L[m][n];
int lcs[index + 1];
lcs[index] = '\0';
i = m;
j = n;
while (i > 0 && j > 0)
{
if (X[i - 1] == Y[j - 1])
{
lcs[index - 1] = X[i - 1];
i--;
j--;
index--;
}
else if (L[i - 1][j] > L[i][j - 1])
{
i--;
}
else
{
j--;
}
}
cout << "最长公共子序列为: " << lcs << endl;
return L[m][n];
}
int main()
{
int X[] = { 1, 6, 2, 8, 3 };
int Y[] = { 2, 9, 3, 6 };
int m = sizeof(X) / sizeof(X[0]);
int n = sizeof(Y) / sizeof(Y[0]);
lcs(X, Y, m, n);
return 0;
}
请注意,这份代码只是一个最基本的示例,可以在实际应用中进行适当修改。如果您有任何问题或疑问,请随时问我。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)