就是一个裸的LCS,不过注意用gets读入
#include <cstdio> #include <cstring> #define N 1010 int main() { int n,m,dp[N][N]; char s1[N],s2[N]; while(gets(s1+1) && gets(s2+1)) { memset(dp,0,sizeof(dp)); n=strlen(s1+1); m=strlen(s2+1); for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) if(s1[i]==s2[j]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=dp[i-1][j]>dp[i][j-1]?dp[i-1][j]:dp[i][j-1]; printf("%d\n",dp[n][m]); } return 0; }
本文介绍了一个经典的最长公共子序列(LCS)问题实现方案。通过使用动态规划的方法,该算法能够找出两个字符串之间的最长公共子序列,并展示了具体的C语言代码实现细节。

511

被折叠的 条评论
为什么被折叠?



