Combinaisons d'éléments en C
Introduction
Générer toutes les combinaisons possibles d'éléments est un défi commun à de nombreuses applications. Cet article explore un algorithme efficace pour générer toutes les k-combinaisons de n éléments en C.
L'algorithme
L'algorithme utilise une technique de masque de bits pour représenter les combinaisons :
Mise en œuvre du code
#include <iostream> #include <vector> using namespace std; void combinations(vector<int>& items, int k) { int n = items.size(); for (int bitmask = 0; bitmask < (1 << n); bitmask++) { vector<int> combination; for (int i = 0; i < n; i++) { if ((bitmask >> i) & 1) { combination.push_back(items[i]); } } cout << "Combination: "; for (int item : combination) { cout << item << " "; } cout << endl; } } int main() { vector<int> items = {1, 2, 3, 4, 5}; int k = 3; combinations(items, k); return 0; }
Sortie
Combination: 1 2 3 Combination: 1 2 4 Combination: 1 2 5 Combination: 1 3 4 Combination: 1 3 5 Combination: 1 4 5 Combination: 2 3 4 Combination: 2 3 5 Combination: 2 4 5 Combination: 3 4 5
Analyse
La complexité de l'algorithme est O(n * 2^n), où n est le nombre d'éléments. En effet, il parcourt toutes les valeurs de masque de bits possibles, chacune représentant une combinaison unique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!