洛谷P2758编辑距离

xiaoxiao2025-10-18  10

 

#include<bits/stdc++.h> using namespace std; int f[2002][2002]; char s1[2002],s2[2002]; int i,j,k,m,n; int main() { scanf("%s%s",s1,s2); m=strlen(s1); n=strlen(s2); for(i=1;i<=m;i++)//当s2为空 s1要一个个添 f[i][0]=i; for(i=1;i<=n;i++)//当s1为空 s2要一个个减掉 f[0][i]=i; for(i=1;i<=m;i++) for(j=1;j<=n;j++) if(s1[i-1]==s2[j-1]) f[i][j]=f[i-1][j-1]; //相等不处理 步数不变 else f[i][j]=min(min(f[i-1][j],f[i][j-1]),f[i-1][j-1])+1;//本来是i-1,j-1 j长度加一,i长度加一,ij都加一 分别是减s1,添s1,改s1 printf("%d\n",f[m][n]); return 0; }

 

转载请注明原文地址: https://www.6miu.com/read-5038112.html

最新回复(0)