Fonction donnant ttes les combinaisons ...
Pépé Lélé
-
jcodeunpeu Messages postés 365 Statut Membre -
jcodeunpeu Messages postés 365 Statut Membre -
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 toutes les différentes combinaisons de deux nombres entre 0 et 99, dans l’ordre croissant.
- Excel trier par ordre croissant chiffre - Guide
- Fonction si et - Guide
- Nombre de jours entre deux dates excel - Guide
- Afficher le 0 devant un nombre dans excel - Guide
- Comment faire deux colonnes indépendantes dans word - Guide
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+