|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Nouveau Membre du Club
![]() Inscription : février 2009 Messages : 261 ![]() |
Bonjour, je suis en train de créer une fonction qui reçoit en paramètre un tableau et retourne toutes les combinaisons possibles de ce tableau.
Par exemple, si on reçoit le tableau suivant: Je voudrais faire en sorte de créer toutes les combinaisons possibles avec toutes les tailles possibles. Avec ce tableau, ca doit retourner: Citation:
Code :
Citation:
|
||||
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() ![]() Clément Développeur informatique Inscription : décembre 2006 Messages : 213 ![]() |
J'avoue que je n'ai pas compris grand chose à ta fonction... A vrai dire, je ne sais pas quel algorithme tu as voulu utiliser derrière. Est ce que tu as essayé de dérouler ton exemple sur papier avec ta fonction ?
Je me permet de te proposer une solution qui a l'air de fonctionner correctement. C'est une fonction récursive, j'espère que tu n'as rien contre, mais dans ton cas, c'est ce qui m'est venu en premier. Essaie de bien comprendre comment elle fonctionne et ne de pas la reprendre bêtement... Code :
[EDIT] Petite erreur sur la complexité, c'est pas 2^(n+1), c'est bien plus que ça... |
||
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : février 2009 Messages : 261 ![]() |
J'avoue ne pas tout comprendre
![]() Pourquoi si j'utilise un tableau avec un nombre de caractères supérieur à , ca ne veut pas fonctionner, ca ne charge pas la page? J'avais essayé pour voir ce que ca donnait sur papier mais je bloquait lorsqu'il s'agit de la combinaison à 2 caractères et de tester avec tout les autres puis de prendre le caractère supérieur dans le tableau.. |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() ![]() Clément Développeur informatique Inscription : décembre 2006 Messages : 213 ![]() |
Supérieur à combien ? On dirait qu'il manque un chiffre ^^.
Je vais essayer de t'expliquer le principe de ma fonction... On va partir d'un cas simple avec le tableau (a, b). Si je veux toutes les combinaisons de taille 1, facile, c'est simplement le tableau de départ (a, b). Ca constitue le cas de base de ma récursivité. Si je veux toutes les combinaisons de taille 2 ou inférieure, je recherche d'abord toutes celles de taille 1. Ok, je les ai (appel récursif). Comment constituer ceux de taille 2 ? Hé bien en ajoutant chaque caractère du tableau de départ, aux combinaisons de taille 1. Clairement, j'ajoute 'a' : devant 'a' (combinaison de taille inférieure) => 'aa' devant 'b' (combinaison de taille inférieure) => 'ab' Et j'ajoute 'b' : devant 'a' (combinaison de taille inférieure) => 'ba' devant 'b' (combinaison de taille inférieure) => 'bb' Ce qui me donne 4 nouvelles combinaisons. Par contre à partir de la taille 3, on a un petit soucis (mais qui peut se corriger facilement). Certains éléments sont en double comme 'aa'. Déroule avec la taille 3 et tu comprendras. J'avais laissé ce bug exprès pour voir si tu suivais (non en fait je viens de m'en rendre compte^^). C'est vraiment pas dur à corriger si tu as pigé le principe. Je ne met donc pas le code définitif, à toi de le faire... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com