Easy C++ recursive code 864 ms .
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. Simple approach with take
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->Simple approach with take and not take method.\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->O(n)\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->O(n)\n\n# Code\n```\nclass Solution {\npublic:\n    map<string,int> mp; //to store all word,in order to access them in O(1) when require. \n    bool f(int i,string &s,int cnt,string q){\n        if(i == s.size()){\n            if(cnt > 1 && q == ""){\n                return true;\n            }\n            return false;\n        }\n        q += s[i];\n        string g;\n        //take\n        if(mp[q]){\n            return (f(i+1,s,cnt+1,g)||f(i+1,s,cnt,q));\n        }\n        //not take\n        return f(i+1,s,cnt,q);\n    }\n    vector<string> findAllConcatenatedWordsInADict(vector<string>& words) {\n       \n        vector<string> ans;\n        for(auto it : words){\n            mp[it]++;\n        }\n        for(auto x : words){\n            string temp = x;\n            string q;\n            //f checks whether given condition in problem is satisfying or not.\n            if(f(0,x,0,q)){\n                ans.push_back(x); //if yes append it to ans.\n            }\n        }\n        return ans;\n    }\n};\n```
['C++']