题意:多组测试数据,每组给你两个字符串,问他们的最长公共子序列的长度。
思路: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
*/