返回题解分享
讨论 / 题解分享/ 帖子详情

编辑距离 - 题解

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2001 ;
int dp[N][N];
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	string s1,s2;cin>>s1>>s2;
	int n = s1.size();
	int m = s2.size();
	for(int i=0;i<=s1.size();i++) dp[i][0] = i;
	for(int j=0;j<=s2.size();j++) dp[0][j] = j;
	
	for(int i=1;i<=s1.size();i++){
		for(int j=1;j<=s2.size();j++){
			if(s1[i-1] == s2[j-1])
			dp[i][j] = dp[i-1][j-1];
			else
			dp[i][j] = min({dp[i-1][j-1],dp[i-1][j],dp[i][j-1]})+1;
		}
	}
	cout<<dp[n][m];
	return 0;
}
0 回复 0 转发 0 喜欢 5 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!