一个字符串A的子串被定义成从A中顺次选出若干个字符构成的串。如A=“cdaad" ,顺次选1,3,5个字符就构成子串" cad" ,现给定两个字符串,求它们的最长共公子串。
赞
踩
一个字符串A的子串被定义成从A中顺次选出若干个字符构成的串。如A=“cdaad" ,顺次选1,3,5个字符就构成子串" cad" ,现给定两个字符串,求它们的最长共公子串。
第一行两个字符串用空格分开。
最长子串的长度。
- # include <iostream>
- # include <cstring>
- using namespace std;
- int f[2010][2010];
- char a[2010],b[2010];
- int max(int a,int b)
- {
- if (a>=b) return a;
- return b;
- }
- int main()
- {
- int i,j,len1,len2;
- cin>>a>>b;
- len1=strlen(a);
- len2=strlen(b);
- for(i=1;i<=len1;i++)
- {
- for(j=1;j<=len2;j++)
- {
- if (a[i-1]==b[j-1]) f[i][j]=f[i-1][j-1]+1;
- else f[i][j]=max(f[i-1][j],f[i][j-1]);
- }
- }
- cout<<f[len1][len2];
- return 0;
- }
abccd aecd
3
两个串的长度均小于2000
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。