Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- N = 0; 0 шаров можно распределить по корзинам одним способом `
- 0 0 0
- N = 1; 1 шар можно распределить по корзинам тремя способами
- 1 0 0
- 0 1 0
- 0 0 1
- N = 2; 2 шара можно распределить по корзинам шестью способами
- 2 0 0
- 0 2 0
- 0 0 2
- 1 1 0
- 1 0 1
- 0 1 1
- и так далее.
- #include <vector>
- #include <iostream>
- #include <iomanip>
- using namespace std;
- void Generate(int N, int K, vector<int>& res) // N шаров, K корзин
- {
- if (N == 0)
- {
- for(auto n: res) cout << n << " ";
- for(int i = 0; i < K; ++i)
- {
- cout << 0;
- if (i != K-1) cout << " ";
- }
- cout << endl;
- }
- else if (K == 0)
- {
- return;
- } else {
- for(int i = 0; i <= N; ++i)
- {
- res.push_back(i);
- Generate(N-i,K-1,res);
- res.pop_back();
- }
- }
- }
- int main(int argc, const char * argv[])
- {
- vector<int> r;
- Generate(10,3,r);
- }
Add Comment
Please, Sign In to add comment