#include <bits/stdc++.h> #define PB push_back #define ST first #define ND second #define _ ios_base::sync_with_stdio(0); cin.tie(0); //mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); using namespace std; using ll = long long; using pi = pair<int,int>; using vi = vector<int>; const int nax = 3000 + 10; int n, m, q; string s, t; int dp[nax][nax]; int main() {_ cin >> n >> m >> q >> s >> t; while(q--) { int a,b,c,d; cin >> a >> b >> c >> d; for(int i = a; i <= b; ++i) { for(int j = c; j <= d; ++j) { if(s[i-1] == t[j-1]) { dp[i][j] = dp[i - 1][j - 1] + 1; } else { dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]); } } } cout << dp[b][d] << "\n"; for(int i = a; i <= b; ++i) { for(int j = c; j <= d; ++j) { dp[i][j] = 0; } } } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <bits/stdc++.h> #define PB push_back #define ST first #define ND second #define _ ios_base::sync_with_stdio(0); cin.tie(0); //mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); using namespace std; using ll = long long; using pi = pair<int,int>; using vi = vector<int>; const int nax = 3000 + 10; int n, m, q; string s, t; int dp[nax][nax]; int main() {_ cin >> n >> m >> q >> s >> t; while(q--) { int a,b,c,d; cin >> a >> b >> c >> d; for(int i = a; i <= b; ++i) { for(int j = c; j <= d; ++j) { if(s[i-1] == t[j-1]) { dp[i][j] = dp[i - 1][j - 1] + 1; } else { dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]); } } } cout << dp[b][d] << "\n"; for(int i = a; i <= b; ++i) { for(int j = c; j <= d; ++j) { dp[i][j] = 0; } } } } |