Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.49 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4.  
  5. string str1,str2,str3;
  6. int dp[70][70][70];
  7.    
  8. /*
  9. int max(int a,int b){
  10.     if(a>b)
  11.         return a;
  12.     else
  13.         return b;
  14. }
  15.  
  16.  
  17. int LCS(int len1,int len2){
  18.     if(len1<0||len2<0)
  19.         return 0;
  20.     else if(str1[len1]==str2[len2]){
  21.         if(dp[len1][len2]==-1)
  22.             dp[len1][len2] = LCS(len1-1,len2-1)+1;
  23.         else
  24.             return dp[len1][len2]++;
  25.     }
  26.     else{
  27.         if(dp[len1][len2]==-1)
  28.             dp[len1][len2] = max(LCS(len1-1,len2),LCS(len1,len2-1));
  29.         else
  30.             return dp[len1][len2]++;
  31.     }
  32. }
  33. */
  34.  
  35. int max3(int a,int b,int c){
  36.     if(a>b){
  37.         if(a>c)
  38.             return a;
  39.         else
  40.             return c;
  41.     }
  42.     else{
  43.         if(b>c)
  44.             return b;
  45.         else
  46.             return c;
  47.     }
  48. }
  49. int LCS3(int len1,int len2,int len3){
  50.     if(len1<0||len2<0||len3<0)
  51.         return 0;
  52.     else if((str1[len1]==str2[len2])&&(str2[len2]==str3[len3])){
  53.         if(dp[len1][len2][len3]==-1){
  54.             dp[len1][len2][len3] = LCS3(len1-1,len2-1,len3-1)+1;
  55.             return dp[len1][len2][len3];
  56.         }
  57.         else
  58.             return dp[len1][len2][len3];
  59.     }
  60.     else{
  61.         if(dp[len1][len2][len3]==-1){
  62.             dp[len1][len2][len3] = max3(LCS3(len1-1,len2,len3),LCS3(len1,len2-1,len3),LCS3(len1,len2,len3-1));
  63.             return dp[len1][len2][len3];
  64.         }
  65.         else
  66.             return dp[len1][len2][len3];
  67.     }
  68. }
  69.        
  70. int main(void){
  71.     int num;
  72.     scanf("%d\n",&num);
  73.     for(int i=0;i<num;i++){
  74.         cin>>str1;
  75.         cin>>str2;
  76.         cin>>str3;
  77.         //cout<<max3(2,22,4);
  78.         memset(dp,-1,sizeof(dp));
  79.         cout<<"Case "<<i+1<<": "<<LCS3(str1.length()-1,str2.length()-1,str3.length()-1)<<endl;
  80.     }
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement