记录一下:
#include <iostream> using namespace std; int dp[21][21]; char X[21]; char Y[21]; void main() { int i,j; cin.getline(X,20); cin.getline(Y,20); int xlen=strlen(X); int ylen=strlen(Y); for ( i=1;i<=xlen;++i) { for ( j=1;j<=ylen;++j) { if (X[i-1]==Y[j-1]) { dp[i][j]=dp[i-1][j-1]+1; } else if (dp[i][j-1]>dp[i-1][j]) { dp[i][j]=dp[i][j-1]; } else dp[i][j]=dp[i-1][j]; } } printf("Length of LCS is:%d\n",dp[xlen][ylen]); i=xlen; j=ylen; int k=dp[i][j]; char lcs[21]={'\0'}; while (i&&j) { if (X[i-1]==Y[j-1]&&dp[i][j]==dp[i-1][j-1]+1) { lcs[--k]=X[i-1]; --i; --j; } else if (X[i-1]!=Y[j-1]&&dp[i][j-1]<dp[i-1][j]) { --i; } else { --j; } } printf("%s\n",lcs); system("pause"); }

浙公网安备 33010602011771号