Advertisement
Josif_tepe

Untitled

Dec 27th, 2021
1,226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <cstring>
  5. using namespace  std;
  6. string a,b;
  7. int memo[105][105][105];
  8. int k;
  9. int f(int i, int j,int k_){
  10.     if (k_==k){
  11.         return 0;
  12.     }
  13.     if(k_ > k or i == -1 or j== -1){
  14.         return -10000;
  15.     }
  16.     if(memo[i][j][k_] != -1){
  17.         return  memo[i][j][k_];
  18.     }
  19.     int res= -10000;
  20.     if(a[i] == b[j]){
  21.         res = max(res,f(i-1,j-1,k_+1) + (int) a[i]);
  22.         res = max(res,f(i-1,j-1,k_));
  23.     }
  24.     res = max(res,f(i-1,j,k_));
  25.     res = max(res,f(i,j-1,k_));
  26.  
  27.     return memo[i][j][k_] =res;
  28. }
  29. int main() {
  30.     int t;
  31.     cin >> t;
  32.     while(t--){
  33.         cin >> a >> b;
  34.         cin  >> k;
  35.         for (int i = 0; i < 102; i++) {
  36.             for (int j = 0; j < 102; j++) {
  37.                 for (int l = 0; l < 102; l++) {
  38.                     memo[i][j][l] = -1;
  39.                 }
  40.             }
  41.         }
  42.         int r = f((int) a.size() - 1, (int) b.size() - 1, 0);
  43.         if(r < 0) {
  44.             cout << 0 << endl;
  45.         }
  46.         else {
  47.             cout << r << endl;
  48.         }
  49.     }
  50. }
  51.  
  52.  
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement