最长公共子序列穷举法C语言代码
时间: 2023-08-13 17:40:10 浏览: 128
以下是最长公共子序列的穷举法C语言代码:
```c
#include <stdio.h>
#include <string.h>
int max(int a, int b) {
return (a > b) ? a : b;
}
int lcs(char* X, char* Y, int m, int n) {
if (m == 0 || n == 0) {
return 0;
} else if (X[m - 1] == Y[n - 1]) {
return 1 + lcs(X, Y, m - 1, n - 1);
} else {
return max(lcs(X, Y, m, n - 1), lcs(X, Y, m - 1, n));
}
}
int main() {
char X[] = "ABCBDAB";
char Y[] = "BDCABA";
int m = strlen(X);
int n = strlen(Y);
printf("Length of LCS is %d", lcs(X, Y, m, n));
return 0;
}
```
这个代码中,lcs() 函数采用递归的方式,当其中一个字符串的长度为0时,最长公共子序列的长度为0;当两个字符串的最后一个字符相同时,最长公共子序列的长度加1;否则,最长公共子序列的长度等于两个字符串去掉一个字符后的最大值。最后,我们在主函数中传入两个字符串,并输出它们的最长公共子序列的长度。
阅读全文