/********************************** 最长公共子序列(LCS) 只能处理一些较短的字符串的DP算法 **********************************/ #define N 10001 /*字符串长度*/ int longest[N][N]; int LCS(char *s1,char *s2) { int i,j,len1,len2; len1 = strlen(s1); len2 = strlen(s2); longest[0][0] = 0; for(i=1;i<=len1;i++) longest[i][0] = 0; for(i=1;i<=len1;i++) longest[0][i] = 0; for (i=1;i<=len1;i++) { for (j=1;j<=len2;j++) { if(s1[i-1] == s2[j-1]) longest[i][j] = longest[i-1][j-1]+1; else if(longest[i-1][j]>longest[i][j-1]) longest[i][j] = longest[i-1][j]; else longest[i][j] = longest[i][j-1]; } } return longest[len1][len2]; }