字符串编辑距离板子题,留一个底,方便日后。
https://www.luogu.com.cn/problem/P2758
设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种:
1、删除一个字符;
2、插入一个字符;
3、将一个字符改为另一个字符;
!皆为小写字母!
题解网上搜一大堆……其实光看代码也都能看懂这道题。
#include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int N=2005; char s1[N],s2[N]; int f[N][N],l1,l2; int main(){ scanf("%s%s",s1+1,s2+1); l1=strlen(s1+1),l2=strlen(s2+1); for(int i=0;i<=l1;i++)f[i][0]=i; for(int i=0;i<=l2;i++)f[0][i]=i; for(int i=1;i<=l1;i++){ for(int j=1;j<=l2;j++){ if(s1[i]==s2[j])f[i][j]=f[i-1][j-1]; else f[i][j]=min(f[i-1][j-1],min(f[i-1][j],f[i][j-1]))+1; } } printf("%d ",f[l1][l2]); return 0; }
+++++++++++++++++++++++++++++++++++++++++++
+本文作者:luyouqi233。 +
+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+
+++++++++++++++++++++++++++++++++++++++++++