fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. typedef std::vector<std::string> str_vector;
  6.  
  7. void combine(str_vector& w, const str_vector& u, const str_vector& v)
  8. {
  9. for(unsigned int t = 0; t < u.size(); t++)
  10. for(unsigned int i = 0; i < v.size(); i++)
  11. w.push_back("(" + u[t] + v[i] + ")");
  12. }
  13.  
  14.  
  15. str_vector problem(unsigned int n, char startLetter)
  16. {
  17. if(n == 1)
  18. return str_vector(1,std::string(1,startLetter));
  19. else
  20. {
  21. str_vector w;
  22. for(unsigned int t = 1; t < n; t++)
  23. combine(w, problem(t, startLetter), problem(n - t, startLetter + (char)t));
  24. return w;
  25. }
  26. }
  27.  
  28. int main()
  29. {
  30. const str_vector& r = problem(4,'a');
  31. for(unsigned int t = 0; t < r.size(); t++)
  32. std::cout << r[t] << "\n";
  33. std::cout << "\n";
  34. }
  35.  
Success #stdin #stdout 0s 2988KB
stdin
Standard input is empty
stdout
(a(b(cd)))
(a((bc)d))
((ab)(cd))
((a(bc))d)
(((ab)c)d)