A/ Disposer de la liste des clients ayant 8 dossiers, de ceux ayant 0 dossier puis 7 puis 1 puis 6 puis 2 ... (classé comme ça ou de 0 à 8 / 8 à 0 peu importe ) Un hash (tableau à 9 entrées menant vers des listes chaînées) serait pas mal, ça dépend un peu de la nature de tes données au départ.
B/ A 8 et 0 dossiers c'est vite traité
C/ Avec "7 dossiers" tu ne peux que placer des "1 dossier". Tu regroupes autant de "1 dossier" que possible avec ceux-ci. S'il y a plus de 7 que de 1, rien à faire de mieux et il y aura de la place perdue.
D/ Avec "6", les "2" puis les "1" si possible.
E/ Avec "5" les 3 puis 2(+1)
F/ Avec "4", je sais pas ce qui est plus efficace entre les réunir par paires ou d'abord mettre les "1", "2", "3" restants. En fait il faut peut-être mettre les "1" puis les "2" aux étapes D et E? Ca dépend peut-être aussi de la nature de tes données (ou pas), est-ce qu'il vaut mieux éviter d'avoir plusieurs "emplacements de 8 cases" pas remplis complètement (mais bien remplis à 6 ou 7 chacun) ou bien éviter au maximum tout trou dans ces emplacements? Dans ce dernier cas, à la fin ils doivent être tous remplis sauf éventuellement un qui sera Si ce qui est important est de minimiser le nombre d'emplacements pris alors le minimum théorique t'es connu: partie entière de la somme des dossiers divisée par 8 + 1 incomplet (dans lequel y a le reste de cette division par 8), m'enfin s'il y a que des "7" tu n'atteindras jamais ce minimum évidemment
Message édité par phosphoreloaded le 28-05-2007 à 10:19:38