编辑距离
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 }