11Fermer13
SallyLe 25/08/2008 à 18:37
Oui d'ailleurs « essayer toutes les solutions possibles » n'est pas vraiment une description de l'algorithme, j'ai dit qu'on ne pouvait pas vraiment faire mieux que ça mais ça ne veut pas dire qu'on ne peut pas améliorer ce que tu as fait : il n'y a certainement pas qu'une seule manière d'essayer toutes les possibilités...

exemple au pif : si a et b sont deux de tes nombres, il existe un grand nombre de possibilités où intervient a*b ; tu dois a priori tester toutes ces possibilités, mais ça ne veut pas dire que tu dois recalculer a*b à chaque fois.

Mais sans savoir ce que tu as fait, c'est difficile de donner autre chose que des exemples au pif ^^

J'essaie de majorer rapidement le nombre de solutions pour 4 nombres. A priori on n'a pas de buts négatifs ou non entiers (?) donc il n'y a qu'une seule manière d'appliquer une opération à deux nombres (si c'est une soustraction on soustrait toujours le plus petit du plus grand, idem pour une division). Donc pour choisir les deux premiers nombres tu as 6 possibilités (s'ils sont tous différents), fois 4 opérations, ça fait 24. Pour la deuxième opération il te reste trois nombres, tu as trois manières d'en choisir deux, fois 4 opérations, ça fait 12, et ensuite il te reste à choisir la troisième opération, 4 possibilités.

Donc au total il y a au plus 24×12×4 = 1152 possibilités. Ça ne semble pas vraiment énorme, si ton programme met une heure à toutes les tester c'est qu'il met plus de trois secondes par possibilité (et encore, normalement c'est seulement dans le pire cas qu'il va toutes les tester), ça me semble assez long : c'est certainement possible d'optimiser même en gardant l'idée de tester toutes les possibilités...

(cross)