46 std::vector<std::vector<T>>
combine(
size_t k);
59 if (k > origin.size())
61 throw std::runtime_error(
"k must be smaller than elements number");
66 throw std::runtime_error(
"k must be greater than zero");
79 for (
size_t i = from; i <= origin.size() - k; ++i)
84 doCombine(i + 1, k - 1);
87 for (
auto ind: current) {
88 comb.push_back(origin[ind]);
90 combinations.push_back(comb);