Comment faire la liste de toutes les sommes de combinaisons possibles dans un tableau pour c ++?

StackOverflow https://stackoverflow.com/questions/8859569

  •  28-10-2019
  •  | 
  •  

Question

J'ai mon devoir à la maison et je ne sais pas comment commencer par le code pour ce genre de problème.

Disons que j'ai un tableau d'entiers avec composé de n éléments,

[A] [B] [C] [D] [E] (Nous avons 5 éléments, par exemple)

Je veux la liste de tous la somme de possibilité telle que je veux imprimer le somme de toutes les combinaisons (ABCDE, ABCD, ABCE, ACDE, BCDE, ABC, ABD, ABE, ACE, ADE, BDE, CDE, AB, AC, AD, AE, BC, BD, BE, CD, CE, DE, A , B, C, D et E)

Un autre exemple serait de 4 éléments d'un tableau ([A] [B] [C] [D])

Je veux énumérer tous somme de combinaison (ABCD, ABC, ABD, ACD, BCD, AB, AC, AD, BC, BD, CD, A, B, C et D).

J'espère que vous parvenez à comprendre ma question. Je besoin d'aide pour cela et je ne sais pas comment faire avec elle?

Était-ce utile?

La solution

Eh bien, voici une règle simple à suivre:

L'ensemble de toutes les combinaisons de « ABCDE » est composé de ces combinaisons qui contiennent (et donc commencer) « A » et ceux qui ne contiennent pas « A ». Dans les deux cas, toutes les combinaisons de « BCDE » peuvent se produire. Bien sûr, des combinaisons de « BCDE » peuvent être traitées de la même manière.

Autres conseils

Quand vous dites « liste toutes les somme de possibilité » voulez-vous dire que vous voulez savoir nombre combinaisons sont réellement possibles?

Dans ce cas, la recherche puis combinaisons d'éléments N pris K à la fois; il y a des pages sur ce site très face à ce problème. Vous pouvez ensuite ajouter simplement le nombre de combinaisons de (par 5) + (par 4) + (par 3) + (par 2) + (par 1) pour obtenir votre total "somme de possibilités".

Ou voulez-vous dire que vous avez un tableau de valeurs et que vous voulez littéralement imprimer les différentes sommes représentées par différentes combinaisons des éléments? Dans ce cas, vous avez besoin d'énumérer réellement toutes les combinaisons et d'évaluer les sommes.

donné un tableau de {1, 2, 3, 4, 5} vous pouvez coder cela comme "A", "B", "C", "D", "E". Des exemples de tuples seraient:

  • ABCDE = 1 + 2 + 3 + 4 + 5
  • ABE = 1 + 2 + 5
  • BCE = 2 + 3 + 5

etc, où vous utilisez l'énumération encodée pour sélectionner les cumulateurs pour votre somme. Notez que la décision d'autoriser ou de doublons disallow (à savoir, est « DE » différent de « ED ») aura un effet très important sur vos résultats; dans la plupart des cas, ce sera probablement pas ce que vous voulez.

Si vous avez 3 éléments, on peut imaginer chaque élément placé à une certaine position à partir de 1 à 3 (ou de 0 à 2) et une matrice booléenne indiquant si l'élément est contenu dans un certain ensemble.

ABC remark
--- ---------------------
000 no element in the set
001 one element, C
010 one element, b
100 ...
011 two elements, b and c
...
111 all elements contained

Maintenant, si vous calculez le nombre de solutions, ce qui est 2³ dans ce cas, et de générer une fonction, ce qui fait une mise en correspondance d'une représentation binaire à un ensemble, de 011 à (b, c), par exemple, vous pouvez programmer facilement une boucle qui parcourt de 0 à mAX-1 et renvoie tous les ensembles, produits par votre fonction de mappage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top