Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. const std::size_t len1 = s1.size(), len2 = s2.size();
  2. vector<vector<int> > d(len1 + 1, vector<int>(len2 + 1));
  3.  
  4. //initialisation
  5. d[0][0] = 0;
  6. for(int i = 1; i <= len1; ++i) d[i][0] = i;
  7. for(int j = 1; j <= len2; ++j) d[0][j] = j;
  8.  
  9. //On remplit la matrice d
  10. for(int i = 1; i <= len1; ++i) {
  11. for(int j = 1; j <= len2; ++j){
  12. d[i][j] = min(min( d[i - 1][j] + 1, d[i][j - 1] + 1), d[i - 1][j - 1] + (s1[i - 1] == s2[j - 1] ? 0 : 1));
  13. //seule différence avec levenshtein
  14. if (i>1 && j>1 && s1[i]==s2[j-1] && s1[i-1]==s2[j]){
  15. d[i][j]=min(d[i][j], d[i-2][j-2] + (s1[i - 1] == s2[j-1] ? 0 : 1));
  16. }
  17. }
  18. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement