Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save gokulcoder7/07ee9e85d0678194a9317efdd42d6e17 to your computer and use it in GitHub Desktop.
Save gokulcoder7/07ee9e85d0678194a9317efdd42d6e17 to your computer and use it in GitHub Desktop.

Revisions

  1. @SuryaPratapK SuryaPratapK created this gist Jan 25, 2020.
    57 changes: 57 additions & 0 deletions Minimum_edit_distance_DP
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,57 @@
    // A Dynamic Programming based C++ program to find minimum
    // number operations to convert str1 to str2
    #include <bits/stdc++.h>
    using namespace std;

    // Utility function to find the minimum of three numbers
    int min(int x, int y, int z)
    {
    return min(min(x, y), z);
    }

    int editDistDP(string str1, string str2, int m, int n)
    {
    // Create a table to store results of subproblems
    int dp[m + 1][n + 1];

    // Fill d[][] in bottom up manner
    for (int i = 0; i <= m; i++) {
    for (int j = 0; j <= n; j++) {
    // If first string is empty, only option is to
    // insert all characters of second string
    if (i == 0)
    dp[i][j] = j; // Min. operations = j

    // If second string is empty, only option is to
    // remove all characters of second string
    else if (j == 0)
    dp[i][j] = i; // Min. operations = i

    // If last characters are same, ignore last char
    // and recur for remaining string
    else if (str1[i - 1] == str2[j - 1])
    dp[i][j] = dp[i - 1][j - 1];

    // If the last character is different, consider all
    // possibilities and find the minimum
    else
    dp[i][j] = 1 + min(dp[i][j - 1], // Insert
    dp[i - 1][j], // Remove
    dp[i - 1][j - 1]); // Replace
    }
    }

    return dp[m][n];
    }

    // Driver program
    int main()
    {
    // your code goes here
    string str1 = "sunday";
    string str2 = "saturday";

    cout << editDistDP(str1, str2, str1.length(), str2.length());

    return 0;
    }