Fonction donnant ttes les combinaisons ...
Pépé Lélé
-
jcodeunpeu Messages postés 365 Date d'inscription Statut Membre Dernière intervention -
jcodeunpeu Messages postés 365 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerais connaître, que ce soit en C ou juste en algorithme, le code de la fonction qui permet à partir d'un ensemble de n élements (qui se trouvent dans un tableau) de construire un tableau contenant toutes les combinaisons possibles (donc en fait, tous les ordres) à partir de ces n élements (que l'on peut supposer différents, pour que ce soit plus simple).
Il y a normalement n*(n-1)*(n-2)*...*1 combinaisons dans ce cas là.
J'ai cherché sur le net le code d'une telle fonction, mais je ne l'ai pas trouvé.
J'ai construit cette fonction pr n=4, et de façon non récursive. Mais le cas qui m'intéresse est celui pour lequel n=6 (soit 720 combinaisons possibles), et je pense qu'il est plus judicieux d'utiliser une fonction récursive.
Si quelqu'un pouvait me fournir un lien fournissant une telle fonction, à défaut du code, merci.
À bientôt.
J'aimerais connaître, que ce soit en C ou juste en algorithme, le code de la fonction qui permet à partir d'un ensemble de n élements (qui se trouvent dans un tableau) de construire un tableau contenant toutes les combinaisons possibles (donc en fait, tous les ordres) à partir de ces n élements (que l'on peut supposer différents, pour que ce soit plus simple).
Il y a normalement n*(n-1)*(n-2)*...*1 combinaisons dans ce cas là.
J'ai cherché sur le net le code d'une telle fonction, mais je ne l'ai pas trouvé.
J'ai construit cette fonction pr n=4, et de façon non récursive. Mais le cas qui m'intéresse est celui pour lequel n=6 (soit 720 combinaisons possibles), et je pense qu'il est plus judicieux d'utiliser une fonction récursive.
Si quelqu'un pouvait me fournir un lien fournissant une telle fonction, à défaut du code, merci.
À bientôt.
A voir également:
- Écrire une fonction qui affiche, dans l’ordre croissant, toutes les différentes combinaisons de trois chiffres différents dans l’ordre croissant - oui, la répétition est volontaire.
- Excel trier par ordre croissant chiffre - Guide
- Fonction si et - Guide
- Application pour écrire les chiffre en lettre - Télécharger - Outils professionnels
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? ✓ - Forum Bureautique
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms - Forum LibreOffice / OpenOffice
2 réponses
Méthode 1 :
Tu peux le faire en récursif
Avec u : union ; cat concaténation d'un prefixe / suffixe à un ensemble de valeurs
Méthode 2 :
Appel récursif basé sur un arbre de recherche :
Bonne chance
Tu peux le faire en récursif
Soit E= {x} u E' melanges(E)= { {x} cat melanges(E') } u { melanges(E') cat {x} } //appel récursif melanges({y})={y} //condition d'arret
Avec u : union ; cat concaténation d'un prefixe / suffixe à un ensemble de valeurs
Méthode 2 :
Appel récursif basé sur un arbre de recherche :
main(){ f({0...9},0,""); } //D valeurs restantes //i nombre de valeurs fixées (=position dans le résultat) //seq = un resutat en cours de construction f(D,i,seq){ si D={} { afficher seq return } pour chaque valeur encore dans D{ f(i+1,D\{valeur},seq cat valeur); } }
Bonne chance
salut,
j'ai trouvé çà ...
Factorielle :
A+
j'ai trouvé çà ...
Factorielle :
long fact(int n) { if(n < 2) return 1; return n*fact(n-1); } void test (n){ int i=1; for( ; i < n;i++) { System.out.println("f( " + i + " ) = " + fact(i)); } System.out.println("factorielle de n : " + fact(i)); }
pour les combinaisons : p(n,k) c(n,k) = ____ k ! permutations : n ! p(n,k) = _____ (k+1) !
A+