2010-12-13 3 views
2

Disons que j'ai 256 images avec une taille moyenne de 70x150 (Donc, taille si variable). Et j'ai une instance Graphic (créée à partir d'une image tamponnée avec une taille donnée) sur laquelle je veux dessiner les images. Mais je veux les dessiner à la surface la plus basse possible. Donc, pas simplement dans une grille, mais vraiment perplexe l'un dans l'autre. Mais !: ils ne peuvent pas se chevaucher.Java: Comment dessiner des images sur la plus petite surface possible?

Peut-être que c'est quelque chose qu'un cerveau humain peut gérer.
Il vaut la peine de lui demander, je pense ....

Merci à l'avance,
Martijn

Par exemple:

+------++------+ 
|  ||  | 
| img1 || img2 | 
|  |+------+ 
|  |+-----------------+ 
+------+|     | 
+---+ |     | 
| 3 | |     | 
| | | img 4  | 
+---+ |     | 
     |     | 
     +-----------------+ 
+0

Je ne comprends pas vraiment votre question. Demandez-vous comment trouver le plus petit rectangle dans une liste de rectangle? Ou comment réellement dessiner votre exemple? Ou quelle est la plus petite taille que vous pouvez dessiner avec une instance graphique? – RoflcoptrException

+2

Je ne connais pas la terminologie exacte à utiliser, mais ce problème ressemble beaucoup à une version 2D du disque dur ou à un problème de gestion de l'espace mémoire: étant donné un nouveau fichier/données que vous voulez stocker, où le mettez-vous? Meilleur ajustement, le pire ajustement, premier ajustement, etc. Peut-être que vous pourriez lire sur ce sujet pour obtenir quelques idées. – DGH

+0

@DGH: En effet, c'est une comparaison pertinente. –

Répondre

2

Fondamentalement, vous demandez une solution à un knapsack problem.

Il n'y a aucun algorithme optimal pour un problème de taille Knapsack arbitraire, car il est le problème NP-dur.

Il y a abondance d'algorithmes sous-optimaux:

Questions connexes