最长公共子序列算法c语言
时间: 2023-11-26 15:46:17 浏览: 141
最长公共子序列(c语言)
3星 · 编辑精心推荐
最长公共子序列算法是一种经典的动态规划算法,可以用于求解两个序列的最长公共子序列。以下是最长公共子序列算法的C语言实现:
```c
#include <stdio.h>
#include <string.h>
#define MAXLEN 100
int max(int a, int b) {
return a > b ? a : b;
}
int lcs(char *s1, char *s2, int len1, int len2) {
int dp[MAXLEN][MAXLEN];
memset(dp, 0, sizeof(dp));
for (int i = 1; i <= len1; i++) {
for (int j = 1; j <= len2; j++) {
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[MAXLEN], s2[MAXLEN];
scanf("%s%s", s1, s2);
int len1 = strlen(s1), len2 = strlen(s2);
int ans = lcs(s1, s2, len1, len2);
printf("最长公共子序列长度为:%d\n", ans);
return 0;
}
```
阅读全文