Перебор сочетаний из n-элементного множества по k. С++, паскаль абс или питон

3 Окт 2019 в 06:43
234 +1
0
Ответы
1

Вот пример кода на C++ для перебора сочетаний из n-элементного множества по k:

#include <iostream>
#include <vector>
void generateCombinations(std::vector<int>& combination, int offset, int k, int n) {
if (k == 0) {
for (int i = 0; i < combination.size(); i++) {
std::cout << combination[i] << " ";
}
std::cout << std::endl;
return;
}
for (int i = offset; i <= n - k; i++) {
combination.push_back(i);
generateCombinations(combination, i + 1, k - 1, n);
combination.pop_back();
}
}
int main() {
int n = 5; // Размер множества
int k = 3; // Размер комбинации
std::vector<int> combination;
generateCombinations(combination, 0, k, n);
return 0;
}

В этом коде функция generateCombinations рекурсивно генерирует все возможные сочетания из n элементов по k элементов. Вы можете изменить значение переменных n и k для различных комбинаций.

Для реализации на Pascal или Python можно использовать аналогичную логику. Например, вот пример на Python:

def generate_combinations(combination, offset, k, n):
if k == 0:
print(combination)
return
for i in range(offset, n - k + 1):
combination.append(i)
generate_combinations(combination, i + 1, k - 1, n)
combination.pop()
n = 5
k = 3
combination = []
generate_combinations(combination, 0, k, n)

Оба примера генерируют все сочетания из n элементов по k элементов и выводят их на экран. Вы можете адаптировать этот код под свои нужды, изменяя значения n и k.

19 Апр 2024 в 18:40
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир