AcWing 897. 算法基础班--第五章--P163 最长公共子序列
原题链接
简单
作者:
初静
,
2021-03-10 19:07:38
,
所有人可见
,
阅读 248
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010, M = 1010;
int n, m;
char a[N], b[M]; // 这里是char,不是int
int f[N][N];
int main () {
cin >> n >> m;
scanf("%s%s", a + 1, b + 1); //因为使用了f[i-1][j-1]所以下标从1开始a+1,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()后面再执行
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;
}