par fatal_error » 26 Juin 2009, 19:52
re,
tout d'abord, je ne comprends pas du tout a quoi corresponde les i,j,k et la syntaxe que tu emploies fdfdfd.
Pour revenir sur lenoncé, jimagine que ce qui t'intéresse, c'est le sac avec le plus de mains possibles dedans.
Une idée, serait de faire plein de tas, puis de les regrouper au fur et a mesure. Plus précisément :
on commence par faire tous les tas de deux mains possibles. Une fois faits, on tente les tas ( paire + paire). Une paire etant constituée de deux mains.
On peut ignorer les tas (paire+main), car pour égaliser un tas (paire + paire), il faudrait rajouter une main et obtiendrait alors un tas (paire + paire).
Du coup, on continue, jusqu'a ce qu'on trouve pas de solution.
Une fois qu'on trouve pas de solutions, ca veut dire qu'on ne peut plus faire des tas ( tas_n_1+tas_n_2) avec card(tas_n_1)=card(tas_n_2). tas_n_1 représente un tas de reference au niveau n, tas_n_2 represente un tas quelconque different de tas_n_1 au niveau n.
on doit donc se limiter a tas_n_1 + tas_{n'} avec card(tas_n')card(tas_n_1)/2
tas_n' représente un tas quelconque de niveau inférieur a tas_n_1
Pour trouver tas_n', on peut tenter pour tous les tas_n_2 denlever un objet, et de voir si ca colle avec tas_n_1. Si ca colle, on a trouvé un sac (pe pas le seul) mais qui contient un max delements.
Si ca colle pas, on le fait pour tous les tas_n_j. Si ca colle toujours pas, il faut alors songer a un tas tas_n_1 + tas_n' avec card(tas_n')=card(tas_n_1)+2
pour tenter doptimiser un peu ca, on peut pour chaque tas, mettons pour tas_n_1, backlister les mains qui sont incompatibles avec tas_n_1. Ainsi quand tas_n_1 rencontre tas_n_2, on peut deja savoir si tas_n_2 est candidat potentiel (sous reserve qu'aucune de ses mains ne figure dans la blacklist).
On peut grace a cette blackliste, trouver un sac minimum composé des mains de tas_n_1 et quelques unes (les valides) de tas_n_2.
Apres, pe qu'il vaut mieux faire tous les tas possibles, mais je pense que ca risque de faire péter lhorloge (les deux). J'ai aussi un petit doute sur le fait qu'on exclue des possibilités (notamment si card(tas_n')+2
En freestyle, donc surement une boulette en vue.
la vie est une fête
