Algorithme defficile

Bonjour,
je besions d'algorithme de combinaison des valeurs
exple une tab={1,2,3,4}
on veut combiner chaque 3 valeurs
donc C(4,3)=4
le resultat est une matrice
1 2 3
1 2 4
1 3 4
2 3 4

merci 2avance
Configuration: Windows Vista
Firefox 3.0.17

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,
    Je ne connais pas suffisament le Java, mais voici un exemple en textuel.

    /* Déclaration */
    val1, val2, val3 /*= 3 variables extraites */
    rang /*variable qui permet d'incrémenter les solutions*/
    tab = {1,2,3,4} /* = ta liste de valeurs */
    resultat(n, 3) /* = ton tableau de résultats n lignes 3 colonnes*/
    rang = 1
    Pour chaque val1 dans tab de 1 à (dimension de tab - 2)
       Pour chaque val2 dans tab de val1+1 à (dimension de tab - 1)
          Pour chaque val3 dans tab de val2+1 à (dimension de tab)
             resultat(rang, 1)=tab(val1)
             resultat(rang, 2)=tab(val2)
             resultat(rang, 3,)=tab(val3)
             rang = rang + 1
          val3 suivant
       val2 suivant
    val1 suivant


    J'espère que c'est clair. N'hésite pas.
    1. merci bien pour ton effort mais je besois un algorithme qui traite c problem dans le cas generale quelque soit le taille de tabeleau initiale.
      le tableau intiale peut contenir un nombre inconnu des valeurs donc l'algorithme doit generer tous les combinaison
      merci
    2. @CoeurEst-ce que le Java accepte les appels récursifs de fonctions ?
    3. @Gord21wi Java accepte les appel récursif des fonctions
    4. @CoeurBonjour,
      Voici un exemple pour p éléments pris dans une liste de n éléments.

      ' Déclaration des variables
      i, ligne
      ' Déclarer une variable de retenue
      retenue
      ' Déclarer un tableau de p colonnes et C(n,p) lignes
      tab_valeurs(C(n,p),p)
      '
      ' Remplir la première ligne
      Pour i = 1 à p
         tab_valeurs(1,i) = i
      i suivant
      '
      retenue=0
      Pour ligne=2 à C(n,p)
         Si tab_valeurs(ligne-1,p)+1 > p alors
            tab_valeurs(ligne,p) = 1
            retenue = 1
         sinon
            tab_valeurs(ligne,p) = valeurs(ligne-1,p) + 1
         fin_de_si
         i=p-1
         Tant que retenue = 1
            Si tab_valeurs(ligne-1,i)+1 > p alors
               tab_valeurs(ligne,i) = 1
               retenue = 1
               i = i - 1
            sinon
               tab_valeurs(ligne,i) = valeurs(ligne-1,i) + 1
               retenue = 0
            fin_de_si
         Fin_de_tant_que
      ligne suivante


      Normalement, ça marche.
      J'ai laissé tomber la forme récursive qui me paraissait intéressante : je ne vois pas comment la mettre en forme.
  2. Bonsoir,
    Sous quel langage ?
    1. Si vous pouvez just me donner une description textuel de l'algorithme et j'essai moi même de faire l'implimentation en java merci d'avance