【模板】最长公共子序列 给定两个长度分别为 N 和 M 的字符串 A 和 B,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。 输入格式第一行包含两个整数 N 和 M。 第二行包含一个长度为 N 的字符串,表示字符串 A。 第三行包含一个长度为 M 的字符串,表示字符串 B。 字符串均由小写字母构成。 输出格式输出一个整数,表示最大长度。 数据范围1≤N,M≤1000 输入样例:1234 5acbdabedc 输出样例:13 模板1234567891011121314151617181920212223242526272829#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N = 1010;int n, m;char a[N], b[N];int f[N][N];int main(){ cin >> n >> m; cin >> a + 1; cin >> b + 1; for (int i = 1; i <= n; i ++) for (int j = 1; j <= m; j ++) { f[i][j] = max(f[i-1][j], f[i][j-1]); if (a[i] == b[j]) f[i][j] = max(f[i][j], f[i-1][j-1]+1); } cout << f[n][m] << endl; return 0;} 模板 #DP 【模板】最长公共子序列 https://piscesfinalizer.github.io/2021/05/14/【模板】最长公共子序列/ 作者 PiscesFinalizer 发布于 2021年5月14日 许可协议 2207-重拾博客 上一篇 【模板】最长上升子序列及其优化 下一篇