Files
python/TangDou/LanQiaoBei/LanQiao14STEMA202208/5_dfs.cpp

39 lines
717 B
C++
Raw Normal View History

2025-08-30 18:35:01 +08:00
#include <bits/stdc++.h>
using namespace std;
const int N = 2010;
int f[N][N];
char a[N], b[N];
int al, bl;
/*
测试用例:
abcd
ebde
答案:3
*/
int dfs(int i, int j) {
if (i == 0) return j;
if (j == 0) return i;
if (~f[i][j]) return f[i][j];
//增加、删除
f[i][j] = min(dfs(i - 1, j) + 1, dfs(i, j - 1) + 1);
//修改
if (a[i] == b[j])
return f[i][j] = min(f[i][j], dfs(i - 1, j - 1));
else
return f[i][j] = min(f[i][j], dfs(i - 1, j - 1) + 1);
}
int main() {
memset(f, -1, sizeof f);
cin >> a + 1 >> b + 1;
al = strlen(a + 1), bl = strlen(b + 1);
printf("%d\n", dfs(al, bl));
return 0;
}