#include
#include
void findCombinations(const std::vector& numbers, int target, std::vector& currentCombination, int start) {
// Если цель достигнута, выводим текущую комбинацию
if (target == 0) {
std::cout << "{ ";
for (int num : currentCombination) {
std::cout << num << " ";
}
std::cout << "}\n";
return;
}
// Пробуем добавить в комбинацию числа начиная с текущего индекса
for (int i = start; i < numbers.size(); i++) {
// Если текущее число больше цели, то нет смысла продолжать
if (numbers[i] > target) continue;
// Добавляем текущее число в комбинацию
currentCombination.push_back(numbers[i]);
// Рекурсивно продолжаем искать комбинации с новой целью
findCombinations(numbers, target - numbers[i], currentCombination, i + 1);
// Удаляем последнее добавленное число, чтобы попробовать следующую комбинацию
currentCombination.pop_back();
}
}
int main() {
std::vector numbers;
for (int i = 1; i <= 24; i++) {
numbers.push_back(i);
}
int target = 128;
std::vector currentCombination;
// Запускаем поиск комбинаций
findCombinations(numbers, target, currentCombination, 0);
return 0;
}