字符串编辑距离
2014-08-12 20:23
253 查看
1 /* 2 * 字符串编辑距离 3 * a[i][j]=min(a[i-1][j]+1,a[i][j-1]+1,a[i-1][j-1]+(str1[i-1]==str2[j-1]?0:1) 4 * */ 5 #include <iostream> 6 #include <cstring> 7 #include <algorithm> 8 using namespace std; 9 10 int StringEditDistance(const char* str1,const char* str2) 11 { 12 int len1=strlen(str1); 13 int len2=strlen(str2); 14 int** arr=new int*[len1+1]; //分配二维数组 15 for(int i=0;i<len1+1;++i) 16 arr[i]=new int[len2+1]; 17 for(int i=0;i<len1+1;++i) 18 arr[i][0]=i; 19 for(int j=0;j<len2+1;++j) 20 arr[0][j]=j; 21 for(int i=1;i<len1+1;++i) 22 for(int j=1;j<len2+1;++j) 23 { 24 int d=str1[i-1]==str2[j-1]?0:1; //判断相等时注意索引!!! 25 arr[i][j]=min(min(arr[i-1][j]+1,arr[i][j-1]+1),arr[i-1][j-1]+d); 26 } 27 int distance=arr[len1][len2]; 28 for(int i=0;i<len1+1;++i) 29 { 30 for(int j=0;j<len2+1;++j) 31 cout<<arr[i][j]<<' '; 32 cout<<endl; 33 } 34 for(int i=0;i<len1+1;++i) //释放分配的二维数组 35 delete[] arr[i]; 36 delete[] arr; 37 return distance; 38 } 39 40 int main() 41 { 42 char str1[100]; 43 char str2[100]; 44 cout<<"请输入字符串1:"; 45 cin.getline(str1,100); 46 cout<<"请输入字符串2:"; 47 cin.getline(str2,100); 48 cout<<StringEditDistance(str1,str2)<<endl; 49 return 0; 50 }
相关文章推荐
- 动态规划(最小字符串编辑距离实现)
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 字符串编辑距离(Levenshtein距离)算法
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 转:最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 【算法】字符串编辑距离
- 字符串反转-编辑距离-约瑟夫环的实现
- HDU 2476 字符串a转化为字符串b需要几次操作 结合编辑距离
- 计算字符串的相似度(编辑距离)
- Edit Distance(编辑距离)算法。计算两个字符串的相似程度。
- 程序员编程艺术第二十八~二十九章:最大连续乘积子串、字符串编辑距离
- 51nod oj 1183 编辑距离 【求一个字符串到另一个字符串的最小操作次数【类似LCS】】
- 程序员编程艺术第二十八~二十九章:最大连续乘积子串、字符串编辑距离
- 字符串编辑距离
- 字符串编辑距离与拼写错误检查
- zjut1381 字符串的编辑距离
- 1020 字符串编辑距离