#include <iostream>
#include <vector>
#include <ctime>
#define SIZE 7
int getRandom(int min, int max) {
return (rand() % (max - min + 1)) + min;
}
void GenerateNRandomNumbers(int N, std::vector<int>& vec, int min, int max) {
for (int i = 0; i < N; i++) {
vec[i] = getRandom(min, max);
}
}
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 size, int combinations) {
std::vector<int> result(size);
printCombination(vec, size, combinations, 0, result, 0);
}
int main() {
srand(static_cast<unsigned int>(time(NULL)));
std::vector<int> vec(SIZE);
int N = SIZE;
int combinations = 3;
int size = vec.size();
GenerateNRandomNumbers(N, vec, 1, 30);
std::cout << "vec: ";
for (int i = 0; i < N; i++) {
std::cout << vec[i] << " ";
}
std::cout << "\n";
generateCombinations(vec, size, combinations);
}
/*
run:
vec: 29 11 21 17 8 20 4
29 11 21
29 11 17
29 11 8
29 11 20
29 11 4
29 21 17
29 21 8
29 21 20
29 21 4
29 17 8
29 17 20
29 17 4
29 8 20
29 8 4
29 20 4
11 21 17
11 21 8
11 21 20
11 21 4
11 17 8
11 17 20
11 17 4
11 8 20
11 8 4
11 20 4
21 17 8
21 17 20
21 17 4
21 8 20
21 8 4
21 20 4
17 8 20
17 8 4
17 20 4
8 20 4
*/