动态规划--编辑距离算法
作者:互联网
设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; }
标签:字符,cmin,int,2000,编辑,算法,字符串,动态,strlen 来源: https://www.cnblogs.com/wwywy/p/11700729.html