#include <iostream>
#include <vector>
void printCombination(const std::vector<int>& vec, int size, int combinations, int resi, std::vector<int>& result, int veci) {
if (resi == combinations) {
for (int j = 0; j < combinations; j++) {
std::cout << result[j] << " ";
}
std::cout << "\n";
return;
}
if (veci >= size) {
return;
}
result[resi] = vec[veci];
printCombination(vec, size, combinations, resi + 1, result, veci + 1);
printCombination(vec, size, combinations, resi, result, veci + 1);
}
void generateCombinations(const std::vector<int>& vec, int combinations) {
std::vector<int> result(vec.size());
printCombination(vec, vec.size(), combinations, 0, result, 0);
}
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
int combinations = 3;
generateCombinations(vec, combinations);
}
/*
run:
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
*/