AcWing 2553. 最优包含
原题链接
简单
作者:
这可不是乱打的啊
,
2021-02-13 12:10:10
,
所有人可见
,
阅读 466
#include<bits/stdc++.h>
using namespace std;
char a[1001], b[1001];
int f[1001][1001]; // f[i][j]为使得a串的前i个字符包含b串的前j个字符的最小操作次数
int main()
{
scanf("%s%s", a + 1, b + 1);
int n = strlen(a + 1), m = strlen(b + 1);
memset(f, 0x3f, sizeof f);
f[0][0] = 0;
for(int i = 1; i <= n; i ++)
{
f[i][0] = 0;
for(int j = 1; j <= m; j ++)
{
f[i][j] = f[i - 1][j];
if(a[i] == b[j]) f[i][j] = min(f[i][j], f[i - 1][j - 1]);
else f[i][j] = min(f[i][j], f[i - 1][j - 1] + 1);
}
}
cout<<f[n][m];
return 0;
}