Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int n, m;
- string s;
- string t;
- const int MAXN = 1e3 + 7;
- const int INF = 1e9;
- int dp[MAXN][MAXN];
- int lazy_dp(int pos_s, int pos_t){
- //cerr << pos_s << ' ' << pos_t << '\n';
- if (dp[pos_s][pos_t] < INF) return dp[pos_s][pos_t];
- if (pos_s > n || pos_t > m) return dp[pos_s][pos_t] = INF;
- if (pos_s == n && pos_t != m) return dp[pos_s][pos_t] = m - pos_t;
- if (pos_t == m && pos_s != n) return dp[pos_s][pos_t] = n - pos_s;
- if (pos_s == n && pos_t == m) return dp[pos_s][pos_t] = 0;
- if (s[pos_s] == t[pos_t]) return dp[pos_s][pos_t] = lazy_dp(pos_s + 1, pos_t + 1);
- 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';
- 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);
- }
- int main() {
- cin >> s;
- cin >> t;
- n = s.size();
- m = t.size();
- for (int i = 0;i < n;i++){
- for (int j = 0;j < m;j++) dp[i][j] = INF;
- }
- cout << lazy_dp(0, 0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement