[C++]最长公共子序列问题

[C++]最长公共子序列问题

最长公共子序列问题:
给定两个字符串s1s2···sn和t1t2···tn。求出这两个字符串最长的公共子序列的长度。字符串s1s2···sn的子序列可以表示为s(i1)s(i2)···s(in)(i12n)的序列
输入格式:
n m
s
t
输出格式:
最长子序列长度

输入:
4 4
abcd
becd
输出:
3

解题思路:当si+1等于tj+1,有三种情况,第一种是在s1··si与t1···tj的公共子序列末尾加上si+1,第二种是s1··sn与t1···ti+1的公共子序列,第三种是s1··si+1与t1···ti的公共子序列

#include
#include
using namespace std;

const int maxn = 10000;

int n;
int m;

string s, t;
int dp[maxn+1][maxn+1];

int main(){
    cin>>n>>m;
    
    cin>>s>>t;
    for(int i = 0; i

你可能感兴趣的:(刷题之旅,算法,c++)