Advertisement
saquib2508

LOJ 1159 Batman

Jun 8th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<bits/stdc++.h>
  2. #define ffr(i,a,b) for(i=a;i<b;i++)
  3. #define mm(a,b) memset(a,b,sizeof(a))
  4. #define pb push_back
  5. #define ll long long
  6.  
  7.  
  8. using namespace std;
  9. string a,b,c;
  10. int dp[54][54][54];
  11.  
  12. ll ans(int i, int j, int k)
  13. {
  14.     if(i<0 || j<0 || k<0) return 0;
  15.     if(dp[i][j][k]!=-1) return dp[i][j][k];
  16.    
  17.     if(a[i]==b[j] && a[i]==c[k]) return 1+ans(i-1,j-1,k-1);
  18.    
  19.     else
  20.     {
  21.         int aa, bb, cc;
  22.         aa=ans(i-1,j,k);
  23.         bb=ans(i,j-1,k);
  24.         cc=ans(i,j,k-1);
  25.         return dp[i][j][k]=max(max(aa,bb),cc);
  26.     }
  27. }
  28.  
  29. int main()
  30. {
  31.     int cc=1, t;
  32.     cin >> t;
  33.     while(t--)
  34.     {
  35.         mm(dp,-1);
  36.         cin >> a >> b >> c;
  37.         int az=a.size();
  38.         int bz=b.size();
  39.         int cz=c.size();
  40.  
  41.         ll call=ans(az-1,bz-1,cz-1);
  42.         printf("Case %d: %lld\n", cc++, call);
  43.     }
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement