Comment trouver tous les sous-ensembles possibles d'un groupe donné?
Je veux extraire tous les sous-ensembles d'un tableau en C# ou C++, puis calculer la somme de tous les sous-ensemble des matrices respectives des éléments à vérifier combien d'entre eux sont égales à un nombre donné.
Ce que je suis à la recherche de l'algorithme. Je comprends la logique ici, mais je n'ai pas été en mesure de mettre en œuvre cette un par maintenant.
Je pense qu'il pourrait y avoir un projet euler problème comme cela aussi.
subsets = filterM (const [False, True])
OriginalL'auteur Mobin | 2009-03-24
Vous devez vous connecter pour publier un commentaire.
En considérant un ensemble
S
deN
éléments, et un sous-ensemble, chaque élément ne soit ou n'appartient pas à ce groupe. Donc2^N
les sous-ensembles possibles (si vous incluez l'original et vide), et il existe une correspondance entre les bits de la représentation binaire dex
entre0
et2^N
aux éléments de lax
ème sous-ensemble deS
.Une fois que vous avez travaillé sur la façon d'énumérer les éléments d'un sous-ensemble, en ajoutant les valeurs est simple.
Pour trouver des sous-ensembles qui égale un total
t
pour les grandesN
, une optimisation pourrait être d'enregistrer les sous-ensembles qui dépassentt
, et pas à tout épreuve qui leur sont propres supersets de ceux-ci. Tester si le nombre de jeux
est un sur-ensemble de l'ensembley
peut être réalisé avec une seule opération au niveau du bit et une comparaison des entiers.any1 peut me donner l'algorithme pour trouver tous les sous-ensembles possibles. j'ai eu cette logique, mais je ne suis pas capable de le faire fonctionner, maintenant, c'est pourquoi j'essaie de trouver quelques codes:s
google pour des exemples de code, ce sous-ensemble chose est populaire problème.
Pete, n'est-il pas entre
0
et(2^N)-1
?L'intervalle [0, 2^N) inclusivement, exclusif.
OriginalL'auteur Pete Kirkham
Ce que vous cherchez est appelé le la puissance du. Rosetta Code a beaucoup de différentes implémentations, mais voici leur code C++ (ils utilisent un vecteur au lieu d'un tableau, mais il devrait être assez facile à traduire).
De sortie:
OriginalL'auteur Bill the Lizard
C'est l'un de mes collège des projets de 4/5 ans, et je ne peux pas rappeler l'algorithme. Comme je vois que & ma mémoire est bonne c'est à l'aide d'un tableau que l'ensemble original et un masque de bits pour indiquer quels éléments sont présents dans les sous-ensemble.
voici le code non testé à partir de l'archive:
Et si c'est votre devoir, vous tuez vous-même bro 😉
OriginalL'auteur sepehr
- Vous;
Un) que vous voulez Vraiment trouver tous les sous-ensembles?
ou
B) le désir de trouver le nombre d'éléments dans un tableau peut être combiné à égal à un nombre donné, et de voir Un) comme une étape vers la solution?
Si c'est Un) ensuite c'est assez simple, mais le nombre de sous-ensembles devient ridiculement élevé très rapidement.
Si c'est B), alors vous devez trier le tableau de la première et de travailler à partir de là.
OriginalL'auteur Andrew Grant