Combinaison possibles sans permutation

Ravageur -  
 koto -
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
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
    1. titi
       
      tsy miainga lty nenlà ah!
      0
    2. koto
       
      mba miteny vaza oa
      0
  2. lugan2008 Messages postés 3 Statut Membre
     
    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
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Bonjour,
      Non, le résultat est l'énoncé de son problème, soit l'affichage de toutes les combinaisons possibles.
      0