题目:最长公共子串(动态规划)
题目描述:
给定两个字符串,输出其最长公共子串的长度。
输入:
ABACCB
AACCAB
输出:
3
解释:
最长公共子串是ACC,其长度为3
公共子串:字符必须是连续相等
公共子序列:字符必须是相等的,可以不联系
代码:
#include<iostream>
using namespace std;
const int N = 1010;
int f[N][N];
string a, b;
int main()
{
cin >> a >> b;
int la = a.length();
int lb = b.length();
int maxx = -1;
for(int i =1;i<=la;i++)
for (int j = 1; j <= la; j++)
{
if (a[i - 1] == b[j - 1])
{
f[i][j] = f[i - 1][j - 1] + 1;
}
else
f[i][j] = 0;
maxx = max(f[i][j], maxx);
}
cout << maxx;
return 0;
}