開啟章節選單

10405 Longest Common Subsequence

解題思路

使用 LCS 算法

程式碼

#include<iostream>
using namespace std;

int main() {
    string a,b;
    while (getline(cin,a) && getline(cin,b)) {
        int dp[a.length()+1][b.length()+1];
        for(int i=0;i<=a.length();i++)
            dp[i][0]=0;
        for(int i=0;i<=b.length();i++)
            dp[0][i]=0;
        for(int i=1;i<=a.length();i++)
        for(int j=1;j<=b.length();j++) {
            if(a[i-1]!=b[j-1])
                dp[i][j]=max(max(dp[i][j-1],dp[i-1][j]),dp[i-1][j-1]);
            else
                dp[i][j]=dp[i-1][j-1]+1;
        }
        cout << dp[a.length()][b.length()] << endl;
    }
}