最长公共子串
#include <bits/stdc++.h>
using namespace std;
char a[1005],b[1005];
int d[1005][1005];
int main()
{
while(scanf("%s%s",a,b)!=EOF){
int len1=strlen(a);
int len2=strlen(b);
memset(d,0,sizeof(d));
for (int i=1;i<=len1;i++){
for (int s=1;s<=len2;s++){
if (a[i-1]-b[s-1]==0){
d[i][s]=d[i-1][s-1]+1;
} else d[i][s]=max(d[i-1][s],d[i][s-1]);
}
}
printf("%d\n",d[len1][len2]);
}
return 0;
}
本文介绍了一种求解两个字符串最长公共子串的问题,并通过C++代码实现了该算法。利用动态规划的思想,该程序能够有效地找出两个字符串的最长公共子串长度。
978

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



