IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Les combinaisons possibles


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 27
    Points
    27
    Par défaut Les combinaisons possibles
    Bonjour,
    J'aimerai avoir vos aides en ce qui concerne le problème suivant: soit un tableau de type string contenant des chaines de caractères, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    tab[0]="t1"
    tab[1]="t2"
    tab[2]="t3"
    à partir de cette table, je veux obtenir toutes les combinaisons possibles ayant la forme suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    t1==>t2; t1==>t3; t2==>t1; t2==>t3; t3==>t1; t3==>t2; 
    t1,t2==>t3; t1,t3==>t2; t2,t3==>t1; 
    t1==>t2,t3; t2==>t1,t3; t3==>t1,t2
    merci d'avance

  2. #2
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Il faut chercher "algorithme de permutation"
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Citation Envoyé par JoeChip Voir le message
    Il faut chercher "algorithme de permutation"
    T'es fort, moi j'ai même pas compris la question. Et encore moins l’intérêt.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Bonjour, j'ai fait le programme java suivant qui permet de me donner les résultats ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    public class Combin1 {
     
    	public String[] init() {
    		String mots[] = new String[3];
    		mots[0] = "t1";
    		mots[1] = "t2";
    		mots[2] = "t3";
     
    		return mots;
    	}
     
    	public int convertir_binaire(int x, int resultat[]) {
    		int quotient, nb_bits = 0;
    		int dividende = x;
     
    		do {
    			quotient = dividende / 2;
    			resultat[nb_bits] = dividende - (2 * quotient);
    			nb_bits++;
    			dividende = quotient;
    		} while (quotient > 0);
     
    		return nb_bits;
    	}
     
    	void afficher_parties(int nb_elts, String[] m) {
    		int i;
    		int[] resultat = new int[8];
    		for (int p = 0; p < 8; p++)
    			resultat[p] = 0;
     
    		int x = 0;
    		int n = convertir_binaire(x, resultat);
    		int compteur = 1;
     
    		while (n <= nb_elts) {
     
    			for (i = 0; i < n; i++)
     
    				if (resultat[i] == 1)
    					System.out.println(m[i]);
     
     
    			System.out.println("\n");
    			compteur++;
    			x++;
    			n = convertir_binaire(x, resultat);
    		}
    	}
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Combin1 c = new Combin1();
    		String ma[] = c.init();
    		int nb_elts = ma.length;
    		c.afficher_parties(nb_elts, ma);
    }
    }
    ce programme me fournit le résultat suivant:

    t1


    t2


    t1
    t2


    t3


    t1
    t3


    t2
    t3


    t1
    t2
    t3
    Mes questions sont: comment je pourrai modifier dans mon programme de tel sorte à éliminer l'apparence des combinaisons d'ordre 1 à savoir: t1 tout seul, t2 tout seul ou t3 tout seul.
    En plus comment je pourrai faire pour rajouter les autres combinaisons: puisque d'après ce programme j'obtiens par exemple "t1 t2" mais non pas l'inverse et ainsi de suite.
    comment je pourrai mettre en jeux le signe ==> entre les différentes chaines de caractères? par exemple t1==>t2 , t2==>t1,....
    merci d'avance.

  5. #5
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Par exemple, si on utilise "thierry Dupont garçon ", tu voudrais quoi ?
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Bonjour,
    et bien si l'on considère les trois chaines de caractères "thierry","Dupont" et "garçon ", on doit obtenir:3^d-2^(d+1)+1 où d est le nombre de termes (ici 3) donc ça nous fait 12 combinaisons qui sont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    "thierry"==>"Dupont"
    "thierry"==>"garçon "
    "Dupont"==>"garçon "
    "Dupont"==>"thierry"
    "garçon "==>"Dupont"
    "garçon "==>"thierry"
    "thierry"==>"Dupont","garçon "
    "Dupont"==>"thierry","garçon "
    "garçon "==>"thierry","Dupont"
    "thierry","Dupont"==>"garçon "
    "thierry","garçon "==>"Dupont"
    "garçon ","Dupont"==>"thierry"
    Voilà ce que je veux comme résultat et je ne parviens pas à le faire correctement :/

  7. #7
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    OK, donc, à partir d'un trio A, B, C, tu veux juste des combinaisons, le reste n'étant que de l'affichage.

    Tu veux d'abord des combinaisons de deux :
    AB AC BC (croissant)
    CB CA BA (decroissant)

    Puis les combinaisons de trois
    ABC BAC BCA
    ACB CAB CBA
    BAC BCA

    Mais là j'en ai déjà deux de plus que toi on dirait...
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Bonsoir, en fait c'est pas obligé que ça soit un trio à partir de n'importe quel nombre de termes on doit être capable de générer les combinaisons possibles.
    J'ai essayé un algorithme de permutation comme l'a indiqué JoeChip, basé sur la fonction factorielle, mais j'ai pu juste générer les combinaison d'une dimension fixe du genre, si j'ai 1, 2 et 3 j'aurai comme résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    123
    132
    213
    231
    312
    321
    ce qui donne un résultat incomplet :/
    voici la classe que j'ai utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    public class Permutation4 {
    	 private int factorielle(int k){
    		 int f=1;
    	 for(int i=1;i<=k;i++)f=f*i;
    	 return f;
    	 } 
    	 private void Permutation (int k,int [] r)
    	    {
    	        int fact = 1;
    	        for (int i = 2 ;  i < r.length+1 ; i++)
    	        {
    	            fact = fact*(i-1);
    	            int pos = i - ( (k/fact) % i ) - 1;
    	            swap(pos,i-1,r);            
    	        }
    	    }
     
    	    private void swap(int i, int j,int [] A)
    	    {
    	        int oi = A[i];
    	        int oj = A[j];
    	        A[j]=oi;
    	        A[i]=oj;        
    	    }
     
    	    public void afficherpermutations(int [] v)
    	    {
     
    	        for (int i = 0 ; i < factorielle(v.length) ; i ++)
    	        {
     
    	             Permutation(i,v);
    	             for(int j=0;j<v.length;j++)System.out.println(v[j]);System.out.println("\n");
    	        }
    	    }
    public static void main(String[] args) {
    	int v[]= {1,2,3,4};
    	Permutation4 p4=new Permutation4();
    	p4.afficherpermutations(v);
    }
    }
    Un peu d'aide s'il vous plait

  9. #9
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Alors attend, je résume.

    Tu as un nombre indéfini d'items. Ça peut être 3, 4, 5, .., N

    Et en fait, tu veux toutes les combinaisons possibles qu'on peut faire avec les N items, sachant que les combinaisons doivent être constituées de 2 à N items.

    Par exemple, si tu as A, B, C et D ça donnera des combinaisons du style

    rang 2 : AB, AC, etc.
    rang 3 : ABC, ABD, etc.
    rang 4 : ABCD, ABDC, etc.

    C'est bien ça ?
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Bonjour, oui thierryler C'est exactement ça oui.

  11. #11
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    OK, dans ce cas, je pense que le plus simple est de faire un algo récursif. Il va devoir gérer deux choses :
    1) faire différentes tailles de combinaisons ;
    2) faire toutes les combinaisons pour une taille donnée.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Vraiment l'idée semble très prometteuse...Est ce que vous pouvez m'orienter un peu plus??? vu que je travaille sur ça depuis un moment sans trouver un essor Merci beaucoup d'avance

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2012
    Messages : 33
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    Ce sujet devrait t'aiguiller, en particulier le deuxième message : Ici !

  14. #14
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Bonjour, Merci Adpar pour le lien je vais le voir

  15. #15
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    La partie la plus simple, c'est des combinaisons de différentes tailles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    String[] items = {"A", "B", ... , "Z"};
     
    List<String[]> combinaisons = new ...
     
    public void start() {
      for(int i = 2; i <= items.lenght; i++) {
        doCombinaisons(i, items);
      }
    }
     
    private void doCombinaison(int nb, String[] subitems) {
      ...
     
      combinaisons.add(..);
    }
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/06/2007, 20h52
  2. Réponses: 16
    Dernier message: 20/10/2006, 16h31
  3. trouver les combinaisons possibles d'un tableau ?
    Par titoumimi dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 20/09/2006, 20h29
  4. toutes les combinaisons possibles
    Par marocleverness dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 29/05/2006, 00h11
  5. Sortir d'un tableau les combinaisons possibles
    Par juelo dans le forum Algorithmes et structures de données
    Réponses: 33
    Dernier message: 26/03/2006, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo