编辑代码

#include <iostream>
#include <string.h>
using namespace std;

string a, b;
int ans,dp[2010][2010];

int dfs(int i ,int j) {
    if (i < 0 && j < 0) return 0;
    if (i < 0 || j < 0) return max(i, j)+1;
    if (dp[i][j] >= 0) return dp[i][j];
    int ans;
    if (a[i] == b[j]) {
        ans = dfs(i-1,j-1);
    }
    else{
        ans = min(dfs(i-1,j-1)+1,min(dfs(i-1,j)+1,dfs(i,j-1)+1));
    }
    dp[i][j] = ans;
    return dp[i][j];
}

int main() {
    cin >> a >> b;
    memset(dp,-1,sizeof(dp));
    ans = dfs(a.size()-1, b.size()-1);
    cout << ans;
	return 0;
}