c语言编码实现输入两串字符求其最大公共子序列
时间: 2023-11-02 17:07:01 浏览: 102
好的,我可以回答这个问题。最大公共子序列可以通过动态规划的方法来实现。具体实现过程可以参考以下步骤:
1. 声明一个二维数组L,用来存储最大公共子序列的长度。
2. 从第1个字符开始逐个比较两个字符数组,如果相同,则L[i][j]=L[i-1][j-1]+1;如果不同,则取L[i-1][j]和L[i][j-1]中的较大值。
3. 最终得到的L[m][n]即为最大公共子序列的长度。
实现代码如下:
int lcs(char* s1, char* s2)
{
int len1 = strlen(s1);
int len2 = strlen(s2);
int L[1000][1000];
int i, j;
for (i = 0; i <= len1; i++)
{
L[i][0] = 0;
}
for (i = 0; i <= len2; i++)
{
L[0][i] = 0;
}
for (i = 1; i <= len1; i++)
{
for (j = 1; j <= len2; j++)
{
if (s1[i - 1] == s2[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[len1][len2];
}
阅读全文