From 7b2118004b1b7c170cf32decc1cad39bdd223582 Mon Sep 17 00:00:00 2001 From: Priyanshu Rajput Date: Mon, 10 Oct 2022 20:41:36 +0530 Subject: [PATCH] edit distance using DP added --- Dynamic Programming/edit-distance.cpp | 41 +++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Dynamic Programming/edit-distance.cpp diff --git a/Dynamic Programming/edit-distance.cpp b/Dynamic Programming/edit-distance.cpp new file mode 100644 index 0000000..ea2015d --- /dev/null +++ b/Dynamic Programming/edit-distance.cpp @@ -0,0 +1,41 @@ +// Problem name: Edit Distance +// Problem link: https://leetcode.com/problems/edit-distance/ + +#include +using namespace std; + +int editDistanceUtil(string& S1, string& S2, int i, int j, vector>& dp){ + + if(i<0) + return j+1; + if(j<0) + return i+1; + + if(dp[i][j]!=-1) return dp[i][j]; + + if(S1[i]==S2[j]) + return dp[i][j] = 0+editDistanceUtil(S1,S2,i-1,j-1,dp); + + // Minimum of three choices + else return dp[i][j] = 1+min(editDistanceUtil(S1,S2,i-1,j-1,dp), + min(editDistanceUtil(S1,S2,i-1,j,dp),editDistanceUtil(S1,S2,i,j-1,dp))); + +} + +int editDistance(string& S1, string& S2){ + + int n = S1.size(); + int m = S2.size(); + + vector> dp(n,vector(m,-1)); + return editDistanceUtil(S1,S2,n-1,m-1,dp); + +} + +int main() { + + string s1 = "horse"; + string s2 = "ros"; + + cout << "The minimum number of operations required is: "<