fork download
  1. #include <vector>
  2. #include <string>
  3. #include <iostream>
  4. #include <iomanip>
  5. #include <numeric>
  6.  
  7. using namespace std;
  8.  
  9. int Count(const vector<int>& x, int sum)
  10. {
  11. int count = 0;
  12. vector<int> a(x.size(),0);
  13.  
  14. for(;;)
  15. {
  16. int i = 0;
  17. if (inner_product(x.begin(),x.end(),a.begin(),0) == sum)
  18. {
  19. for(int j = 0; j < x.size(); ++j)
  20. {
  21. for(int k = 0; k < a[j]; ++k)
  22. cout << "+" << x[j];
  23. }
  24. cout << " = " << sum << endl;
  25. ++count;
  26. }
  27. do {
  28. if (a[i]*x[i] <= sum)
  29. {
  30. a[i]++;
  31. break;
  32. }
  33. else
  34. {
  35. a[i] = 0;
  36. ++i;
  37. }
  38. } while( i < a.size());
  39. if (i == a.size()) break;
  40. };
  41. return count;
  42. }
  43.  
  44. int main(int argc, const char * argv[])
  45. {
  46. vector<int> x = { 5, 10, 15, 25 };
  47. cout << Count(x,40) << endl;
  48. }
  49.  
  50.  
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
+5+5+5+5+5+5+5+5 = 40
+5+5+5+5+5+5+10 = 40
+5+5+5+5+10+10 = 40
+5+5+10+10+10 = 40
+10+10+10+10 = 40
+5+5+5+5+5+15 = 40
+5+5+5+10+15 = 40
+5+10+10+15 = 40
+5+5+15+15 = 40
+10+15+15 = 40
+5+5+5+25 = 40
+5+10+25 = 40
+15+25 = 40
13