Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n, m;
  4. string s;
  5. string t;
  6. const int MAXN = 1e3 + 7;
  7. const int INF = 1e9;
  8. int dp[MAXN][MAXN];
  9. int lazy_dp(int pos_s, int pos_t){
  10.     //cerr << pos_s << ' ' << pos_t << '\n';
  11.     if (dp[pos_s][pos_t] < INF) return dp[pos_s][pos_t];
  12.     if (pos_s > n || pos_t > m) return dp[pos_s][pos_t] = INF;
  13.     if (pos_s == n && pos_t != m) return dp[pos_s][pos_t] = m - pos_t;
  14.     if (pos_t == m && pos_s != n) return dp[pos_s][pos_t] = n - pos_s;
  15.     if (pos_s == n && pos_t == m) return dp[pos_s][pos_t] = 0;
  16.     if (s[pos_s] == t[pos_t]) return dp[pos_s][pos_t] = lazy_dp(pos_s + 1, pos_t + 1);
  17.     cout << s[pos_s] << ' ' << t[pos_t] << ' ' << lazy_dp(pos_s + 1, pos_t) << ' ' << lazy_dp(pos_s, pos_t + 1) << ' ' << lazy_dp(pos_s + 1, pos_t + 1) << '\n';
  18.     return dp[pos_s][pos_t] = (min(min(lazy_dp(pos_s + 1, pos_t), lazy_dp(pos_s, pos_t + 1)), lazy_dp(pos_s + 1, pos_t + 1)) + 1);
  19. }
  20. int main() {
  21.     cin >> s;
  22.     cin >> t;
  23.     n = s.size();
  24.     m = t.size();
  25.     for (int i = 0;i < n;i++){
  26.         for (int j = 0;j < m;j++) dp[i][j] = INF;
  27.     }
  28.     cout << lazy_dp(0, 0);
  29.     return 0;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement