最短编辑距离

来源:互联网 发布:网络教育几月考试 编辑:程序博客网 时间:2024/06/03 01:26

https://web.stanford.edu/class/cs124/lec/med.pdf

#include <stdio.h>#include <stdlib.h>int min(int a,int b){return a<=b ? a:b;}// X and Y index from 1int ed(char X[] ,int m, char Y[], int n){int **dp = new int*[m+1];for(int i = 0; i < m+1; i++)dp[i] = new int[n+1];for(int j = 0; j < n+1;j++)dp[0][j] = j;for(int i = 0; i < m+1; i++)dp[i][0] = i;for(int i = 1; i <= m; i++){for(int j = 1; j <= n; j++){dp[i][j] = dp[i-1][j] + 1; // X delete X[i]dp[i][j] = min(dp[i][j], dp[i][j-1]);  // X insert X[i]if(X[i]==Y[j])dp[i][j] = min(dp[i][j],dp[i-1][j-1]);else dp[i][j] = min(dp[i][j],dp[i-1][j-1] + 2);  //  replace.}}int result = dp[m+1][n+1];for(int i = 0; i < m+1; i++)delete [] dp[i];delete [] dp;return result;}


0 0
原创粉丝点击