19int min(
int x,
int y,
int z) {
return min(min(x, y), z); }
26int editDist(
string str1,
string str2,
int m,
int n) {
34 if (str1[m - 1] == str2[n - 1])
35 return editDist(str1, str2, m - 1, n - 1);
40 return 1 + min(editDist(str1, str2, m, n - 1),
41 editDist(str1, str2, m - 1, n),
42 editDist(str1, str2, m - 1, n - 1));
48int editDistDP(
string str1,
string str2,
int m,
int n) {
50 std::vector<std::vector<int> >
dp(m + 1, std::vector<int>(n + 1));
53 for (
int i = 0; i <= m; i++) {
54 for (
int j = 0; j <= n; j++) {
64 else if (str1[i - 1] == str2[j - 1])
65 dp[i][j] =
dp[i - 1][j - 1];
68 dp[i][j] = 1 + min(
dp[i][j - 1],
79 string str1 =
"sunday";
80 string str2 =
"saturday";
82 cout << editDist(str1, str2, str1.length(), str2.length()) <<
endl;
83 cout << editDistDP(str1, str2, str1.length(), str2.length()) <<
endl;