Iamtui1010

levenshtein_distance.cpp

Jan 15th, 2022
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<vector>
  4. #include<algorithm>
  5.  
  6. #define long long long
  7. #define nln '\n'
  8.  
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13.     cin.tie(0)->sync_with_stdio(0);
  14.     cout.tie(0)->sync_with_stdio(0);
  15.     //freopen("levenshtein_distance.inp", "r", stdin);
  16.     string st1, st2;
  17.     getline(cin, st1, nln);
  18.     getline(cin, st2, nln);
  19.     long n = st1.size(), m = st2.size();
  20.     st1 = '$' + st1;
  21.     st2 = '$' + st2;
  22.     // Dynamic planning
  23.     vector<vector<long>> dp(n+1);
  24.     for (long i = 0; i <= n; ++i)
  25.         dp[i].resize(m+1, 0);
  26.     for (long i = 1; i <= n; ++i)
  27.         dp[i][0] = i;
  28.     for (long j = 1; j <= m; ++j)
  29.         dp[0][j] = j;
  30.     for (long i = 1; i <= n; ++i)
  31.         for (long j = 1; j <= m; ++j)
  32.             dp[i][j] = min(dp[i-1][j-1]+(long)(st1[i] != st2[j]), min(dp[i-1][j], dp[i][j-1])+1);
  33.     cout << dp[n][m] << nln;
  34.     return 0;
  35. }
  36.  
Advertisement
Add Comment
Please, Sign In to add comment