本题链接:897. 最长公共子序列 - AcWing题库
给定两个长度分别为 N 和 M 的字符串 A 和 B,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。
本题分析如下图,对于状态可以分两种情况讨论
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
int m,n;
const int N = 1010;
char a[N],b[N];
int f[N][N];
int main(){
cin >> m >> n >> a + 1 >> b + 1;
for(int i = 1;i <= m;i++){
for(int j = 1;j <= n;j++){
if(a[i] == b[j]) f[i][j] = f[i - 1][j - 1] + 1;
else f[i][j] = max(f[i - 1][j], f[i][j - 1]);
}
}
cout << f[m][n];
return 0;
}