洛谷2758:编辑距离——题解

字符串编辑距离板子题,留一个底,方便日后。

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\n",f[l1][l2]);
    return 0;
}

+++++++++++++++++++++++++++++++++++++++++++

 +本文作者:luyouqi233。               +

 +欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

posted @ 2020-02-26 17:38  luyouqi233  阅读(187)  评论(0编辑  收藏  举报