Skip to content

Latest commit

 

History

History
34 lines (25 loc) · 1.01 KB

File metadata and controls

34 lines (25 loc) · 1.01 KB
int find(string A, string B, string C, int i, int j, int k,vector<vector<vector<int>>>&dp)
    {
        if(i<0 || j<0 || k<0)
            return 0;
            
        if(dp[i][j][k]!=-1)
            return dp[i][j][k];
            
        if(A[i]==B[j] && A[i]==C[k])
            return dp[i][j][k]= 1+ find(A,B,C,i-1,j-1,k-1,dp);
            
        else
        {
            int l=find(A,B,C,i-1,j,k,dp);
            int c=find(A,B,C,i,j-1,k,dp);
            int s=find(A,B,C,i,j,k-1,dp);
            
            return dp[i][j][k]=max(l,max(c,s));
        }
    }

        int LCSof3 (string A, string B, string C, int n1, int n2, int n3)
        {
            // your code here
            
            vector<vector<vector<int>>>dp(n1+1,vector<vector<int>>(n2+1,vector<int>(n3+1,-1)));
            
            return find(A,B,C,n1-1,n2-1,n3-1,dp);
            }