Partage
  • Partager sur Facebook
  • Partager sur Twitter

combinaison de p éléments parmi n

    11 mars 2011 à 17:32:30

    Je cherche à récupérer toute les combinaisons possibles de p éléments pris dans un ensemble de n éléments...
    par exemple pour [1 2 3 4] -> [1 2] [1 3] [1 4] [2 3] [2 4] [3 4]

    Voilà comment j'ai commencé mais ça ne fonctionne pas encore :

    public ArrayList<ArrayList<Integer>> combinaison(ArrayList<Integer> liste, int p){
    	ArrayList<ArrayList<Integer>> combinaisons = new ArrayList<ArrayList<Integer>>();
    	if (p==0 || liste.size()<p){
    		//ne rien faire -> condition d'arret
    	}
    	else{
    		for(int i=0;i<liste.size();i++){
    			int elt = liste.get(i);
    			liste.remove(i);
    			ArrayList<ArrayList<Integer>> combinaisonsReste = combinaison(liste, p-1);
    			for(int j=0; j<combinaisonsReste.size();j++){
    				combinaisonsReste.get(j).add(0, elt);
    				combinaisons.add(combinaisonsReste.get(j));
    			}
    		}
    	}
    	return combinaisons;
    }
    


    Aidez-moi à corriger mon code s'il vous plait...
    • Partager sur Facebook
    • Partager sur Twitter
      11 mars 2011 à 21:45:31

      Salut,

      J'ai l'impression que tu te compliques la tâche en ajoutant des ArryList dans d'autres ArrayList...

      J'ai essayé de créer ton code et voici le résultat (il fonctionne à merveille maintenant, je ne sais pas le but exacte de ton exercice...) :

      List<Integer> l1 = new ArrayList<Integer>();
      l1.add(1);
      l1.add(2);
      l1.add(3);
      l1.add(4);
      
      for(int i = l1.size(); i > 0; i--){
          for(int j = 0; j < l1.size(); j++){
              System.out.println(l1.get(i-1) + " " + l1.get(j)); //i-1 sinon, BountArrayListException car ça commence, ne l'oublions pas, à 0
          }
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
      Lorsque l'on fait une recherche google, on tombe sur des forums qui nous disent de chercher sur google...
        12 mars 2011 à 0:36:12

        merci VonDriguen de m'avoir répondu, mais je cherche a faire un code pour n'importe quel n ou p (p<n) là tu ne traites que les couples... je comprends que mon exemple t'ai induit en erreur

        si n=5 et p=3 je dois avoir [1 2 3 4 5] -> [1 2 3] [1 3 4] [1 3 5] [2 3 4] [2 3 5] [3 4 5]
        • Partager sur Facebook
        • Partager sur Twitter

        combinaison de p éléments parmi n

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown