题意:多组测试数据,每组给你两个字符串,问他们的最长公共子序列的长度。
思路:LCS裸题。。。
//#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN = 1005;
int dp[MAXN][MAXN];
int LCS(string a, string b)
{
memset(dp, 0, sizeof(dp));
for (int i = 1; i <= a.size(); i++)
{
for (int j = 1; j <= b.size(); j++)
{
if (a[i-1] == b[j-1]) dp[i][j] = max(dp[i][j], dp[i-1][j-1]+1);
else dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
}
return dp[a.size()][b.size()];
}
int main()
{
ios::sync_with_stdio(false);
string a, b;
while (cin >> a >> b)
{
cout << LCS(a, b) << endl;
}
return 0;
}
/*
abcfbc abfcab
programming contest
abcd mnp
*/
本文介绍了一种解决最长公共子序列(LCS)问题的方法,通过动态规划算法计算两个字符串的最长公共子序列长度。提供了完整的C++实现代码,并演示了如何通过输入两字符串来获取它们之间的最长公共子序列长度。
1172

被折叠的 条评论
为什么被折叠?



