Combinaison possibles sans permutation

Fermé
Ravageur - 6 févr. 2008 à 16:59
 koto - 3 mars 2011 à 10:17
Bonjour,
Je cherche un algorithme ou code (c++ ou visual basic) dont le but est d'afficher toutes les combinaisons possible de p éléments d'un tableau d'entiers de n
Éléments exemple :
J'ai un tableau de 3 éléments int[] tab = {1,2,3} et que je veux les combinaisons de 2 elements.
resultats.
Les combinaisons de 1.2.3 avec p=2 sont :
12
13
23

Je veux un algo générique pour un tableau de n entier, et le nombre d'élément des combinaisons est p (C(n,p))
Sans permuation, sans arrangements, sans répétitions.

Exemple si je veux avoir 4 numéros parmi 22 numéros
3,4,6,7,8,10,11,12,15,17,25,28,29,30,32,38,41,44,45,51,63
Ce qui donne 175 560 / 24 = 7 315 combinaisons

Merci

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
6 févr. 2008 à 23:10
Salut,

Je te propose un algorithme récursif. Je te laisse le plaisir de le coder.
Tout d'abord, tu utilises un tableau d'entier : tab de N éléments.
Soit p, le nombre d'éléments à prendre.
procedure ecrireCombinaison (entier : p, tableau d'entiers : tab)
début
    Si p=0 Alors Fin
    Pour i dans tab faire
         afficher tab[i]
         Val=enlever(tab,i)
         ecrireCombinaison(p-1,tab)
         remettre(tab,i,Val)
    FinPour
fin


La fonction enlever renvoie tab[i] et supprime l'élément i du tableau.
La fonction remettre remet à la place i, la valeur Val

Cordialement.
7
tsy miainga lty nenlà ah!
0
mba miteny vaza oa
0
lugan2008 Messages postés 2 Date d'inscription lundi 16 août 2010 Statut Membre Dernière intervention 25 septembre 2010
25 sept. 2010 à 09:40
est ce que le est resultat est l'affichage un par un des elements de tab
puisqu'on a la fonction affiche (tab[i])
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
25 sept. 2010 à 10:15
Bonjour,
Non, le résultat est l'énoncé de son problème, soit l'affichage de toutes les combinaisons possibles.
0