最长公共子串

给出2个小写字母组成的字符串,求它们最长的公共子串的长度是多少?

例如:”abcdefg” 与”xydoeagab”。有最长的公共子串”deg”,

答案为:3。

输入格式

  第一行:一个字符串,长度不超过1000。

第二行:一个字符串,长度不超过1000。

输出格式

  输出一个整数。

输入/输出例子1

输入:

  edabcdfg

  kdxbcafbg

输出:

  5

样例解释

代码:

#include
using namespace std;
string a,b;
int f[1004][1004];
int ans;
int dp();
int main(){
    cin>>a>>b;
    for(int i = 0;i < a.size();i++)
        for(int j = 0;j < b.size();j++){
            int maxLen = 0;
            if(a[i] == b[j]){
                if(i > 0&&j > 0)maxLen = 1+(f[i-1][j-1]);
            	else maxLen = 1;
				}else{
                    if(i > 0)maxLen = max(maxLen,f[i-1][j]);
                    if(j > 0)maxLen = max(maxLen,f[i][j-1]);
                }
                f[i][j] = maxLen;
            }
    cout<

你可能感兴趣的:(算法,c++,动态规划)