问题描述 :
给定两个字符串,寻找这两个字串之间的最长公共子序列。
输入说明 :
输入两行,分别包含一个字符串,仅含有小写字母。
输出说明 :
最长公共子序列的长度。
输入范例 :
abcdgh
aedfhb
输出范例 :
3
完整C++代码
详细题解https://blog.youkuaiyun.com/lxt_Lucia/article/details/81209962,大佬题解十分详细
#include <bits/stdc++.h>
using namespace std;
string a, b;
int dp[1110][1110], len1, len2;
void lcs()
{
for (int i = 1; i <= len1; i++) {
for (int j = 1; j <= len2; j++) {
if (a[i - 1] == b[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
}
int main()
{
cin >> a;
cin >> b;
memset(dp, 0, sizeof dp);
len1 = a.size();
len2 = b.size();
lcs();
cout << dp[len1][len2] << endl;
return 0;
}
😋欢迎大伙私信或者评论区交流讨论😋