Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- using namespace std;
- string str1,str2,str3;
- int dp[70][70][70];
- /*
- int max(int a,int b){
- if(a>b)
- return a;
- else
- return b;
- }
- int LCS(int len1,int len2){
- if(len1<0||len2<0)
- return 0;
- else if(str1[len1]==str2[len2]){
- if(dp[len1][len2]==-1)
- dp[len1][len2] = LCS(len1-1,len2-1)+1;
- else
- return dp[len1][len2]++;
- }
- else{
- if(dp[len1][len2]==-1)
- dp[len1][len2] = max(LCS(len1-1,len2),LCS(len1,len2-1));
- else
- return dp[len1][len2]++;
- }
- }
- */
- int max3(int a,int b,int c){
- if(a>b){
- if(a>c)
- return a;
- else
- return c;
- }
- else{
- if(b>c)
- return b;
- else
- return c;
- }
- }
- int LCS3(int len1,int len2,int len3){
- if(len1<0||len2<0||len3<0)
- return 0;
- else if((str1[len1]==str2[len2])&&(str2[len2]==str3[len3])){
- if(dp[len1][len2][len3]==-1){
- dp[len1][len2][len3] = LCS3(len1-1,len2-1,len3-1)+1;
- return dp[len1][len2][len3];
- }
- else
- return dp[len1][len2][len3];
- }
- else{
- if(dp[len1][len2][len3]==-1){
- dp[len1][len2][len3] = max3(LCS3(len1-1,len2,len3),LCS3(len1,len2-1,len3),LCS3(len1,len2,len3-1));
- return dp[len1][len2][len3];
- }
- else
- return dp[len1][len2][len3];
- }
- }
- int main(void){
- int num;
- scanf("%d\n",&num);
- for(int i=0;i<num;i++){
- cin>>str1;
- cin>>str2;
- cin>>str3;
- //cout<<max3(2,22,4);
- memset(dp,-1,sizeof(dp));
- cout<<"Case "<<i+1<<": "<<LCS3(str1.length()-1,str2.length()-1,str3.length()-1)<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement