fork download
  1. #include <iostream>
  2. #include <unordered_map>
  3. #include <string>
  4. using namespace std;
  5.  
  6. // Used for memoization
  7. unordered_map<unsigned int, unsigned long int> m;
  8.  
  9. unsigned long int count(const int n, const unsigned int k, const string s)
  10. {
  11. unsigned long int res=0;
  12.  
  13. // Jumped over
  14. if(n<0) return 0;
  15.  
  16. // Last jump is valid
  17.  
  18. if(n==0) { cout << s << endl; return 1;}
  19. for(unsigned int i=1;i<=k; ++i)
  20. {
  21. count(n-i,k, s + (s==""?"":",") + to_string(i));
  22. //if(m.find(n-i) == m.end()) { m[n-i] = count(n-i,k, s + "," + to_string(i)); }
  23. //res += m[n-i];
  24. }
  25.  
  26. return res;
  27. }
  28.  
  29. int main() {
  30. // your code goes here
  31. cout << count(4, 3, "") << endl;
  32. return 0;
  33. }
Success #stdin #stdout 0s 4520KB
stdin
Standard input is empty
stdout
1,1,1,1
1,1,2
1,2,1
1,3
2,1,1
2,2
3,1
0