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 }