#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 1000
int max(int a, int b) {
return a > b ? a : b;
}
int lcs(char* str1, char* str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
int dp[MAX_LENGTH][MAX_LENGTH];
int i, j;
for (i = 0; i <= len1; i++) {
dp[i][0] = 0;
}
for (j = 0; j <= len2; j++) {
dp[0][j] = 0;
}
for (i = 1; i <= len1; i++) {
for (j = 1; j <= len2; j++) {
if (str1[i-1] == str2[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 str1[] = "ABCBDAB";
char str2[] = "BDCAB";
int result;
result = lcs(str1, str2);
printf("最长公共子序列的长度为%d\n", result);
return 0;
}