链接:https://vjudge.net/problem/HDU-1159#author=0
题意:
最长公共子序列,LCS
思路:
LCS
代码:
#include <iostream> #include <memory.h> #include <vector> #include <map> #include <algorithm> #include <cstdio> #include <math.h> #include <queue> #include <string> #include <stack> using namespace std; typedef long long LL; const int MAXN = 1000 + 10; int dp[MAXN][MAXN]; int main() { string a, b; while (cin >> a >> b) { memset(dp, 0, sizeof(dp)); int lena = (int)a.length(); int lenb = (int)b.length(); for (int i = 1;i <= lena;i++) { for (int j = 1;j <= lenb;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]); } } cout << dp[lena][lenb] << endl; } return 0; }