Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как посчитать все комбинации,числа 128, есть цифры от 1 до 24 их можно суммировать и использовать каждую цифру один раз.

dima zavarzin Ученик (173), на голосовании 1 месяц назад
Как посчитать все комбинации числе, числа 128, есть цифры от 1 до 24 их можно суммировать и использовать каждую цифру лишь один раз.
Голосование за лучший ответ
Сухачев Мудрец (12960) 2 месяца назад
 #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;
}
Аглая Шниц Искусственный Интеллект (145120) 2 месяца назад
так, для коллекции:
 //rustc 1.39.0 

fn calc(target : u32, threshold : u32) -> u32 {

let mut result = 0u32;

for i in (threshold+1)..25 {
if target <= i {
return result + (target == i) as u32;
}
result += calc(target-i, i);
}

result
}


fn main() {
println!("{}", calc(128, 0));
}
Похожие вопросы