文章
21
粉丝
0
获赞
19
访问
4.8k
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
using namespace std;
string s1, s2;
vector<int> f;
int main() {
cin >> s1 >> s2;
int n1 = s1.size(), n2 = s2.size();
f.resize(n2 + 1);
// 边界
for(int i = 0; i < n2 + 1; i++)
f[i] = i;
// 动态规划
for(int i = 0; i < n1; i++){
int pre = f[0];
f[0] = i + 1;
for(int j = 0; j < n2; j++){
int tmp = f[j + 1];
if(s1[i] == s2[j])
f[j + 1] = pre;
else
f[j + 1] = min(min(f[j + 1], f[j]) , pre)+ 1;
pre = tmp;
}
}
cout << f[n2];
return 0;
}
登录后发布评论
暂无评论,来抢沙发