onurLe 28/07/2008 à 19:47
Moi je pense à un truc comme ça:
On trie le tableau d'entrée par ordre décroissant (n log(n)) jusque là on est bon.
On déclare deux variables où on met:
meilleurSol == la meilleure solution trouvée (c'est une liste qui est un sous-ensemble de la liste de début)
meilleurSolVal == la valeur de cette solution (la somme des nombres qu'il y a dedans)
f(i) {
si (i> tableauDuDebut.length) return;
On regarde l'élément n° i, est-ce que son ajout à meilleurSol donne une meilleure solution? (est-on plus proche de N?)
Si oui, on dit meilleurSol = meilleurSol + {premier élément}, et appelle f(i+1)
si non, return;
}
au début, on appelle f(0)
... un truc du genre.