Guest User

Untitled

a guest
Jan 18th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. N = 0; 0 шаров можно распределить по корзинам одним способом `
  2. 0 0 0
  3. N = 1; 1 шар можно распределить по корзинам тремя способами
  4. 1 0 0
  5. 0 1 0
  6. 0 0 1
  7. N = 2; 2 шара можно распределить по корзинам шестью способами
  8. 2 0 0
  9. 0 2 0
  10. 0 0 2
  11. 1 1 0
  12. 1 0 1
  13. 0 1 1
  14. и так далее.
  15.  
  16. #include <vector>
  17. #include <iostream>
  18. #include <iomanip>
  19.  
  20. using namespace std;
  21.  
  22. void Generate(int N, int K, vector<int>& res) // N шаров, K корзин
  23. {
  24. if (N == 0)
  25. {
  26. for(auto n: res) cout << n << " ";
  27. for(int i = 0; i < K; ++i)
  28. {
  29. cout << 0;
  30. if (i != K-1) cout << " ";
  31. }
  32. cout << endl;
  33. }
  34. else if (K == 0)
  35. {
  36. return;
  37. } else {
  38. for(int i = 0; i <= N; ++i)
  39. {
  40. res.push_back(i);
  41. Generate(N-i,K-1,res);
  42. res.pop_back();
  43. }
  44. }
  45. }
  46.  
  47.  
  48.  
  49. int main(int argc, const char * argv[])
  50. {
  51. vector<int> r;
  52. Generate(10,3,r);
  53. }
Add Comment
Please, Sign In to add comment