fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. int main() {
  5. using std::size_t;
  6. size_t n = 5, k = 3;
  7.  
  8. std::vector<std::vector<size_t>> buses(k);
  9. std::vector<size_t> bus_sizes(buses.size());
  10. for(auto& bus_size : bus_sizes) bus_size = 3;
  11. for(size_t n = 0; n < buses.size(); ++n) buses[n].reserve(bus_sizes[n]);
  12.  
  13. size_t start_person = 0;
  14.  
  15. auto comb = [&buses, &bus_sizes, n](size_t start_person, const auto& comb) -> void {
  16. if(start_person == n) {
  17. // finished!
  18. std::cout << '|';
  19. for(size_t i = 0; i < buses.size(); ++i) {
  20. for(size_t j = 0; j < buses[i].size(); ++j) std::cout << buses[i][j] << ' ';
  21. std::cout << '|';
  22. }
  23. std::cout << '\n';
  24. }
  25. else {
  26. size_t bus = 0;
  27. for(; bus < buses.size(); ++bus) {
  28. if(buses[bus].size() < bus_sizes[bus]) {
  29. buses[bus].push_back(start_person); // place person i in bus
  30. comb(start_person + 1, comb);
  31. buses[bus].pop_back();
  32. }
  33. }
  34. if(bus == buses.size()) { /* more people than buses :( EXCEPTION!!!! */ }
  35. }
  36. };
  37.  
  38. comb(start_person, comb);
  39. }
Success #stdin #stdout 0s 3416KB
stdin
Standard input is empty
stdout
|0 1 2 |3 4 ||
|0 1 2 |3 |4 |
|0 1 2 |4 |3 |
|0 1 2 ||3 4 |
|0 1 3 |2 4 ||
|0 1 3 |2 |4 |
|0 1 4 |2 3 ||
|0 1 |2 3 4 ||
|0 1 |2 3 |4 |
|0 1 4 |2 |3 |
|0 1 |2 4 |3 |
|0 1 |2 |3 4 |
|0 1 3 |4 |2 |
|0 1 3 ||2 4 |
|0 1 4 |3 |2 |
|0 1 |3 4 |2 |
|0 1 |3 |2 4 |
|0 1 4 ||2 3 |
|0 1 |4 |2 3 |
|0 1 ||2 3 4 |
|0 2 3 |1 4 ||
|0 2 3 |1 |4 |
|0 2 4 |1 3 ||
|0 2 |1 3 4 ||
|0 2 |1 3 |4 |
|0 2 4 |1 |3 |
|0 2 |1 4 |3 |
|0 2 |1 |3 4 |
|0 3 4 |1 2 ||
|0 3 |1 2 4 ||
|0 3 |1 2 |4 |
|0 4 |1 2 3 ||
|0 |1 2 3 |4 |
|0 4 |1 2 |3 |
|0 |1 2 4 |3 |
|0 |1 2 |3 4 |
|0 3 4 |1 |2 |
|0 3 |1 4 |2 |
|0 3 |1 |2 4 |
|0 4 |1 3 |2 |
|0 |1 3 4 |2 |
|0 |1 3 |2 4 |
|0 4 |1 |2 3 |
|0 |1 4 |2 3 |
|0 |1 |2 3 4 |
|0 2 3 |4 |1 |
|0 2 3 ||1 4 |
|0 2 4 |3 |1 |
|0 2 |3 4 |1 |
|0 2 |3 |1 4 |
|0 2 4 ||1 3 |
|0 2 |4 |1 3 |
|0 2 ||1 3 4 |
|0 3 4 |2 |1 |
|0 3 |2 4 |1 |
|0 3 |2 |1 4 |
|0 4 |2 3 |1 |
|0 |2 3 4 |1 |
|0 |2 3 |1 4 |
|0 4 |2 |1 3 |
|0 |2 4 |1 3 |
|0 |2 |1 3 4 |
|0 3 4 ||1 2 |
|0 3 |4 |1 2 |
|0 3 ||1 2 4 |
|0 4 |3 |1 2 |
|0 |3 4 |1 2 |
|0 |3 |1 2 4 |
|0 4 ||1 2 3 |
|0 |4 |1 2 3 |
|1 2 3 |0 4 ||
|1 2 3 |0 |4 |
|1 2 4 |0 3 ||
|1 2 |0 3 4 ||
|1 2 |0 3 |4 |
|1 2 4 |0 |3 |
|1 2 |0 4 |3 |
|1 2 |0 |3 4 |
|1 3 4 |0 2 ||
|1 3 |0 2 4 ||
|1 3 |0 2 |4 |
|1 4 |0 2 3 ||
|1 |0 2 3 |4 |
|1 4 |0 2 |3 |
|1 |0 2 4 |3 |
|1 |0 2 |3 4 |
|1 3 4 |0 |2 |
|1 3 |0 4 |2 |
|1 3 |0 |2 4 |
|1 4 |0 3 |2 |
|1 |0 3 4 |2 |
|1 |0 3 |2 4 |
|1 4 |0 |2 3 |
|1 |0 4 |2 3 |
|1 |0 |2 3 4 |
|2 3 4 |0 1 ||
|2 3 |0 1 4 ||
|2 3 |0 1 |4 |
|2 4 |0 1 3 ||
|2 |0 1 3 |4 |
|2 4 |0 1 |3 |
|2 |0 1 4 |3 |
|2 |0 1 |3 4 |
|3 4 |0 1 2 ||
|3 |0 1 2 |4 |
|4 |0 1 2 |3 |
||0 1 2 |3 4 |
|3 4 |0 1 |2 |
|3 |0 1 4 |2 |
|3 |0 1 |2 4 |
|4 |0 1 3 |2 |
||0 1 3 |2 4 |
|4 |0 1 |2 3 |
||0 1 4 |2 3 |
||0 1 |2 3 4 |
|2 3 4 |0 |1 |
|2 3 |0 4 |1 |
|2 3 |0 |1 4 |
|2 4 |0 3 |1 |
|2 |0 3 4 |1 |
|2 |0 3 |1 4 |
|2 4 |0 |1 3 |
|2 |0 4 |1 3 |
|2 |0 |1 3 4 |
|3 4 |0 2 |1 |
|3 |0 2 4 |1 |
|3 |0 2 |1 4 |
|4 |0 2 3 |1 |
||0 2 3 |1 4 |
|4 |0 2 |1 3 |
||0 2 4 |1 3 |
||0 2 |1 3 4 |
|3 4 |0 |1 2 |
|3 |0 4 |1 2 |
|3 |0 |1 2 4 |
|4 |0 3 |1 2 |
||0 3 4 |1 2 |
||0 3 |1 2 4 |
|4 |0 |1 2 3 |
||0 4 |1 2 3 |
|1 2 3 |4 |0 |
|1 2 3 ||0 4 |
|1 2 4 |3 |0 |
|1 2 |3 4 |0 |
|1 2 |3 |0 4 |
|1 2 4 ||0 3 |
|1 2 |4 |0 3 |
|1 2 ||0 3 4 |
|1 3 4 |2 |0 |
|1 3 |2 4 |0 |
|1 3 |2 |0 4 |
|1 4 |2 3 |0 |
|1 |2 3 4 |0 |
|1 |2 3 |0 4 |
|1 4 |2 |0 3 |
|1 |2 4 |0 3 |
|1 |2 |0 3 4 |
|1 3 4 ||0 2 |
|1 3 |4 |0 2 |
|1 3 ||0 2 4 |
|1 4 |3 |0 2 |
|1 |3 4 |0 2 |
|1 |3 |0 2 4 |
|1 4 ||0 2 3 |
|1 |4 |0 2 3 |
|2 3 4 |1 |0 |
|2 3 |1 4 |0 |
|2 3 |1 |0 4 |
|2 4 |1 3 |0 |
|2 |1 3 4 |0 |
|2 |1 3 |0 4 |
|2 4 |1 |0 3 |
|2 |1 4 |0 3 |
|2 |1 |0 3 4 |
|3 4 |1 2 |0 |
|3 |1 2 4 |0 |
|3 |1 2 |0 4 |
|4 |1 2 3 |0 |
||1 2 3 |0 4 |
|4 |1 2 |0 3 |
||1 2 4 |0 3 |
||1 2 |0 3 4 |
|3 4 |1 |0 2 |
|3 |1 4 |0 2 |
|3 |1 |0 2 4 |
|4 |1 3 |0 2 |
||1 3 4 |0 2 |
||1 3 |0 2 4 |
|4 |1 |0 2 3 |
||1 4 |0 2 3 |
|2 3 4 ||0 1 |
|2 3 |4 |0 1 |
|2 3 ||0 1 4 |
|2 4 |3 |0 1 |
|2 |3 4 |0 1 |
|2 |3 |0 1 4 |
|2 4 ||0 1 3 |
|2 |4 |0 1 3 |
|3 4 |2 |0 1 |
|3 |2 4 |0 1 |
|3 |2 |0 1 4 |
|4 |2 3 |0 1 |
||2 3 4 |0 1 |
||2 3 |0 1 4 |
|4 |2 |0 1 3 |
||2 4 |0 1 3 |
|3 4 ||0 1 2 |
|3 |4 |0 1 2 |
|4 |3 |0 1 2 |
||3 4 |0 1 2 |