Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <stdlib.h>
  4. #include <vector>
  5. #include <string>
  6. using namespace std;
  7.  
  8. int calcSameness(string &s, int len_s, string &t, int len_t)
  9. {
  10. if (len_s == 0)
  11. return len_t;
  12. if (len_t == 0)
  13. return len_s;
  14. if (len_s > 0 && len_t > 0 && s[len_s] == t[len_t - 1] && s[len_s - 1] == t[len_t])
  15. return min(min(min(calcSameness(s, len_s - 1, t, len_t) + 1,
  16. calcSameness(s, len_s, t, len_t - 1) + 1),
  17. calcSameness(s, len_s - 2, t, len_t - 2) + 1),
  18. calcSameness(s, len_s - 1, t, len_t - 1) + (s[len_s] == t[len_t] ? 0 : 1));
  19. return min(min(calcSameness(s, len_s - 1, t, len_t) + 1,
  20. calcSameness(s, len_s, t, len_t - 1) + 1),
  21. calcSameness(s, len_s - 1, t, len_t - 1) + (s[len_s] == t[len_t] ? 0 : 1));
  22. }
  23.  
  24. //Необходимо реализовать метод
  25. //о алгоритме можно прочитать в источниках указанных в программе курса, или на странице курса в ЛМС или в презентациях к семинару.
  26. int Wagner_Fischer_for_Damerau_Levenshtein(string& s, string& t)
  27. {
  28. return calcSameness(s, s.length() - 1, t, t.length() - 1);
  29. }
  30.  
  31. //Не изменять метод main без крайней необходимости
  32. //ОБЯЗАТЕЛЬНО добавить в комментариях подробные пояснения и причины побудившие вас изменить код этого метода.
  33. int main(int argc, const char * argv[])
  34. {
  35. int n;
  36. fstream fin;
  37. fstream fout;
  38. fin.open("input.txt",ios::in);
  39. fout.open("output.txt",ios::out);
  40. if(fin.is_open()) {
  41. string N;
  42. getline(fin,N);
  43. n = atoi( N.c_str());
  44. for (int i = 0; i < n; i++) {
  45. string s;
  46. string t;
  47. getline(fin,s);
  48. getline(fin,t);
  49. fout << Wagner_Fischer_for_Damerau_Levenshtein(s, t) << (i == n-1 ? "" : " ");
  50. }
  51. fout.close();
  52. fin.close();
  53. }
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement