1276:【例9.20】编辑距离

编辑距离

 1 #include<iostream>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 
 6 const int N=2005;
 7 string a,b;
 8 int ans[N][N];
 9 int main(){
10     cin>>a>>b;
11     //初始化
12     ans[0][0]=a[0]==b[0]?0:1;
13     for(int i=1;i<a.length();i++){
14         ans[0][i]=ans[0][i-1];
15         if(a[i]!=b[0])ans[0][i]++;
16     }
17     for(int i=1;i<b.length();i++){
18         ans[i][0]=ans[i-1][0];
19         if(b[i]!=a[0])ans[i][0]++;
20     }
21     for(int i=1;i<b.length();i++)
22         for(int j=1;j<a.length();j++)
23             ans[i][j]=min(ans[i-1][j-1]+(b[i]==a[j]?0:1),min(ans[i-1][j],ans[i][j-1])+1);
24     cout<<ans[b.length()-1][a.length()-1];
25     return 0;
26 }

 

posted @ 2021-08-21 16:52  Rekord  阅读(223)  评论(0编辑  收藏  举报