Maison >développement back-end >C++ >Comment générer tous les sous-ensembles d'un ensemble à l'aide d'un algorithme récursif ?

Comment générer tous les sous-ensembles d'un ensemble à l'aide d'un algorithme récursif ?

DDD
DDDoriginal
2024-11-12 15:10:02795parcourir

How can you generate all subsets of a set using a recursive algorithm?

Générer tous les sous-ensembles d'un ensemble

Dans la détermination de tous les sous-ensembles d'un ensemble donné, le nombre d'éléments (n) joue un rôle crucial . Un algorithme efficace exploite des techniques récursives pour y parvenir.

Algorithme récursif

L'algorithme récursif fonctionne sur le principe selon lequel, pour chaque élément, les sous-ensembles peuvent être partitionnés en deux catégories : celles contenant l’élément et celles l’excluant. Autrement, ces deux partitions partagent des sous-ensembles identiques.

En commençant par n=1, nous avons deux sous-ensembles : {} (l'ensemble vide) et {1}.

Pour n>1, nous déterminons les sous-ensembles de 1,...,n-1 et dupliquez-les. Un ensemble aura n ajouté à chaque sous-ensemble, tandis que l'autre restera inchangé. L'union de ces deux ensembles donne l'ensemble complet des sous-ensembles.

Exemple illustratif

Générons les sous-ensembles de {1, 2, 3, 4, 5} :

  • n=1 : {{} , {1}}
  • n=2 : Prenez {} , {1} et ajoutez 2. Union avec {} , {1} : {{} , {1} , {2 } , {1, 2}}
  • n=3 : Ajoutez 3 : {{} , {1} , {2} , {1, 2}, {3} , {1, 3} , {2, 3} , {1, 2, 3}}
  • n=4 : Ajoutez 4 : { {} , {1} , {2} , {1, 2} , {3} , {1, 3} , {2, 3} , {1, 2, 3}, {4} , {1, 4} , {2, 4} , {1, 2, 4} , {3, 4} , {1, 3, 4} , {2, 3, 4} , { 1, 2, 3, 4}}
  • n=5 : Ajoutez 5 : {{} , {1} , {2} , {1, 2} , {3} , {1, 3} , {2, 3} , {1, 2, 3}, {4} , {1, 4} , {2, 4} , {1, 2, 4} , {3, 4} , {1, 3, 4} , {2, 3, 4} , {1, 2, 3, 4}, {5} , {1, 5} , {2, 5} , {1, 2, 5} , {3, 5} , {1, 3, 5} , {2, 3, 5} , { 1, 2, 3, 5}, {4, 5} , {1, 4, 5} , {2, 4, 5} , {1, 2, 4, 5} , {3, 4, 5} , {1, 3, 4, 5} , {2, 3, 4, 5} , {1, 2, 3, 4, 5}}

Ainsi, nous arrivons aux 32 sous-ensembles de {1, 2, 3, 4, 5}.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn