码迷,mamicode.com
首页 > 编程语言 > 详细

动态规划--编辑距离算法

时间:2019-10-18 22:30:29      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:cin   space   turn   c++   距离   mes   技术   http   ios   

设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B所用的最少字符操作数称为字符串A到 B的编辑距离,记为d(A,B)。 对于给定的字符串A和字符串B,计算其编辑距离 d(A,B)。

 

对于每一个对应字符有三种解决方法案:

技术图片

 

 

技术图片

 

技术图片

 

 

C++代码:

#include <iostream>
#include <string.h>
using namespace std;
int p[2000][2000] = {0};
int min(int a, int b, int c) {
    int cmin = a;
    if (cmin > b)
        cmin = b;
    if (cmin > c)cmin = c;

    return cmin;
}
int main() {
    char a[2000], b[2000];
    cin>>a;
    cin>>b;
    int c = strlen(a), d = strlen(b);
    for (int j = 1; j <= d; j++) {
        p[0][j] = j;
    }
    for (int i = 1; i <= c; i++) {
        p[i][0] = i;
    }
    for (int i = 1; i <= c; i++) {
        for (int j = 1; j <= d; j++) {
 
            if (a[i - 1] == b[j - 1])
                p[i][j] =min(p[i - 1][j]+1, p[i][j - 1]+1, p[i - 1][j - 1]) ;
            else
                p[i][j] =min(p[i - 1][j]+1, p[i][j - 1]+1, p[i - 1][j - 1]+ 1);
        }
    }
cout<<p[c][d];
    return 0;
}

 

动态规划--编辑距离算法

标签:cin   space   turn   c++   距离   mes   技术   http   ios   

原文地址:https://www.cnblogs.com/wwywy/p/11700729.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!