#include
#include
using namespace std;
int minT(int a, int b)
{
if (a < b)
{
return a;
}
return b;
}
int EditDistanceT(string word1, int i,int lenn, string word2, int j,int lenm)
{
if (i == lenn)
{
return lenm - j;
}
if (j == lenm)
{
return lenn - i;
}
if (word1[i] == word2[j])
{
return EditDistanceT(word1, i + 1, lenn, word2, j + 1, lenm);
}
else
{
int insertnum = EditDistanceT(word1, i, lenn, word2, j + 1, lenm);
/*
abcd
aert
b!=e insert is
aebcd
aert
Actually we not insert,so i is b,so i is compare j+1;
/
int deletenum= EditDistanceT(word1, i + 1, lenn, word2, j , lenm);
/
abcd
aert
b!=e delete is
acd
aert
Actually we not delete,so next i is i+1,so i is compare j;
*/
int replacenum = EditDistanceT(word1, i + 1, lenn, word2, j + 1, lenm);
return minT(insertnum, minT(deletenum, replacenum)) + 1;
}
}
int EditDistance(string word1,string word2)
{
int n = word1.size();
int m = word2.size();
return EditDistanceT(word1, 0, n, word2, 0, m);
}
int main()
{
cout << EditDistance(“rad”, “apple”) << endl;
system(“pause”);
return 0;
}
04-26
04-26
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交