GastonFontenla

Edit Distance OIA

Oct 16th, 2016
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. #define DEL 1
  5. #define REP 1
  6. #define INS 1
  7.  
  8. using namespace std;
  9.  
  10. int EditDistance(string a, string b) ///Quiero convertir a en b
  11. {
  12.     vector <vector <int> > m (b.size()+1, vector <int> (a.size()+1));
  13.  
  14.     for(int i=0; i<a.size()+1; i++)
  15.         m[0][i] = i*DEL;
  16.  
  17.     for(int i=0; i<b.size()+1; i++)
  18.         m[i][0] = i*INS;
  19.  
  20.     for(int i=1; i<=b.size(); i++)
  21.     {
  22.         for(int j=1; j<=a.size(); j++)
  23.         {
  24.             m[i][j] = m[i][j-1] + DEL;
  25.             m[i][j] = min(m[i][j], m[i-1][j] + INS);
  26.  
  27.             if(a[j-1] == b[i-1])
  28.                 m[i][j] = min(m[i][j], m[i-1][j-1] + 0);
  29.             else
  30.                 m[i][j] = min(m[i][j], m[i-1][j-1] + REP);
  31.         }
  32.     }
  33.  
  34.     return m[b.size()][a.size()];
  35. }
  36.  
  37. int main()
  38. {
  39.     cout << EditDistance("roca", "car") << endl;
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment