用c++写出最长公共子序列
时间: 2023-03-24 07:00:27 浏览: 107
C++实现最长公共子序列问题
以下是使用 C 语言编写的计算最长公共子序列的代码:
```
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
int max(int a, int b) {
return (a > b) ? a : b;
}
int lcs(char* str1, char* str2, 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 (str1[i - 1] == str2[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() {
char str1[MAX_LEN];
char str2[MAX_LEN];
int len1, len2;
printf("请输入第一个字符串:\n");
scanf("%s", str1);
len1 = strlen(str1);
printf("请输入第二个字符串:\n");
scanf("%s", str2);
len2 = strlen(str2);
printf("最长公共子序列的长度为:%d\n", lcs(str1, str2, len1, len2));
return 0;
}
```
这个程序通过动态规划算法计算出两个字符串的最长公共子序列。在主函数中,用户可以输入两个字符串,程序会输出它们的最长公共子序列的长度。
阅读全文