HDU-1159-Common Subsequence

链接: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;
}

  

原文地址:https://www.cnblogs.com/YDDDD/p/10630128.html