#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; } } } } |
English