用c++写一个最长公共子序列的代码
时间: 2024-05-01 22:19:37 浏览: 90
好的,以下是用C语言写的最长公共子序列代码:
```c
#include <stdio.h>
#include <string.h>
int max(int a, int b) {
return a>b?a:b;
}
int lcs(char* s1, char* s2, int len1, int len2) {
int dp[len1+1][len2+1];
int i, j;
for (i=0; i<=len1; i++) {
for (j=0; j<=len2; j++) {
if (i==0 || j==0) {
dp[i][j] = 0;
}
else if (s1[i-1] == s2[j-1]) {
dp[i][j] = dp[i-1][j-1] + 1;
}
else {
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
}
}
return dp[len1][len2];
}
int main() {
char s1[100], s2[100];
printf("请输入第一个字符串:\n");
scanf("%s", s1);
printf("请输入第二个字符串:\n");
scanf("%s", s2);
int len1 = strlen(s1);
int len2 = strlen(s2);
printf("最长公共子序列的长度为:%d\n", lcs(s1, s2, len1, len2));
return 0;
}
```
这段代码可以计算两个字符串的最长公共子序列的长度。用户只需要输入两个字符串就可以得到答案。感谢您的提问!
阅读全文