Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <algorithm>
- #include <stdio.h>
- #include <iomanip>
- #include <cmath>
- #include <set>
- #include <queue>
- #include <cassert>
- #include <map>
- using namespace std;
- const int INF = 1000000000;
- int main()
- {
- string s;
- string s1 , s2;
- cin >> s;
- cin >> s1;
- cin >> s2;
- int l1 = s1.length() , l2 = s2.length();
- int f1[l1 + 1][l2 + 1] , f2[l1 + 1][l2 + 1];
- for (int i = 0; i <= l1; i++){
- for (int j = 0; j <= l2; j++){
- f1[i][j] = INF;
- f2[i][j] = INF;
- }
- }
- f1[0][0] = 0;
- f2[0][0] = 0;
- for (int i = 0; i <= l1; i ++){
- for (int j = 0; j <= l2; j++){
- if (i > 0 && s[i + j - 1] == s1[i - 1]){
- f1[i][j] = min(f1[i - 1][j] , f2[i - 1][j] + 1);
- }
- if (j > 0 && s[i + j - 1] == s2[j - 1]){
- f2[i][j] = min(f2[i][j - 1] , f1[i][j - 1] + 1);
- }
- }
- }
- cout << min(f1[l1][l2] , f2[l1][l2]);
- return 0;
- }
Add Comment
Please, Sign In to add comment