Guest User

Untitled

a guest
Jan 25th, 2016
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <stdio.h>
  6. #include <iomanip>
  7. #include <cmath>
  8. #include <set>
  9. #include <queue>
  10. #include <cassert>
  11. #include <map>
  12.  
  13. using namespace std;
  14.  
  15. const int INF = 1000000000;
  16.  
  17. int main()
  18. {
  19.     string s;
  20.     string s1 , s2;
  21.     cin >> s;
  22.     cin >> s1;
  23.     cin >> s2;
  24.     int l1 = s1.length() , l2 = s2.length();
  25.  
  26.     int f1[l1 + 1][l2 + 1] , f2[l1 + 1][l2 + 1];
  27.  
  28.     for (int i = 0; i <= l1; i++){
  29.         for (int j = 0; j <= l2; j++){
  30.             f1[i][j] = INF;
  31.             f2[i][j] = INF;
  32.         }
  33.     }
  34.     f1[0][0] = 0;
  35.     f2[0][0] = 0;
  36.  
  37.     for (int i = 0; i <= l1; i ++){
  38.         for (int j = 0; j <= l2; j++){
  39.             if (i > 0 && s[i + j - 1] == s1[i - 1]){
  40.                 f1[i][j] = min(f1[i - 1][j] , f2[i - 1][j] + 1);
  41.             }
  42.             if (j > 0 && s[i + j - 1] == s2[j - 1]){
  43.                 f2[i][j] = min(f2[i][j - 1] , f1[i][j - 1] + 1);
  44.             }
  45.         }
  46.     }
  47.  
  48.     cout << min(f1[l1][l2] , f2[l1][l2]);
  49.  
  50.     return 0;
  51. }
Add Comment
Please, Sign In to add comment