最长公共子串-dp
題目:
給定兩個字符串,求出它們之間最長的相同子字符串的長度。
公共子串和公共子序列不同,公共子序列不要求連續(xù),但公共子串必須是連續(xù)的。如:
A = “helloworld”
B = “l(fā)oop”
A和B的最長公共子序列是"loo",但最長公共子串是"lo"
解題思路:
代碼如下:
#include <iostream> using namespace std; string a, b; const int N = 1010; int dp[N][N]; int maxs = -1;int main() {cin >> a >> b;int len_a = a.length();int len_b = b.length();for (int i = 1; i <= len_a; i++)for (int j = 1; j <= len_b; j++) {if (a[i - 1] == b[j - 1])dp[i][j] = dp[i - 1][j - 1] + 1;elsedp[i][j] = 0;maxs = max(dp[i][j], maxs);}cout << maxs << endl;return 0; }總結
- 上一篇: 电脑在运行中突然死机是怎么回事电脑正常运
- 下一篇: 背部刮痧的好处有哪些