编写一个求最长公共子序列的c++代码
时间: 2024-05-29 07:11:58 浏览: 149
C++求最长公共子序列
5星 · 资源好评率100%
以下是一个求最长公共子序列的C代码:
#include <stdio.h>
#include <string.h>
#define MAXLEN 100
int max(int a, int b) {
return (a > b) ? a : b;
}
int lcs(char *str1, char *str2, int len1, int len2) {
int i, j;
int lcs[MAXLEN][MAXLEN];
for (i = 0; i <= len1; i++) {
for (j = 0; j <= len2; j++) {
if (i == 0 || j == 0) {
lcs[i][j] = 0;
} else if (str1[i - 1] == str2[j - 1]) {
lcs[i][j] = lcs[i - 1][j - 1] + 1;
} else {
lcs[i][j] = max(lcs[i - 1][j], lcs[i][j - 1]);
}
}
}
return lcs[len1][len2];
}
int main() {
char str1[MAXLEN], str2[MAXLEN];
int len1, len2;
printf("请输入第一个字符串:");
scanf("%s", str1);
printf("请输入第二个字符串:");
scanf("%s", str2);
len1 = strlen(str1);
len2 = strlen(str2);
printf("最长公共子序列的长度为:%d\n", lcs(str1, str2, len1, len2));
return 0;
}
阅读全文