Hmm...
Bin ein kleiner unstudierter Bengel
Ich würde an die Sache folgendermaßen rangehen:
x Blöcke
y Spalten
Ich würde die Blöcke nach der Höhe sortieren und dann mit dem größten Block anfangen und ihn setzen.
Dann setze ich den zweithöchsten daneben und schaue, ob ich noch einen kleineren Block habe, der zusammen mit dem zweithöchsten nicht höher als der höchste Block ist...
Dann gehe ich auf den dritthöchsten, etc. etc.
Wenn man das durchzieht und dann, wenn Spalte Y gefüllt ist, von hinten anfängt und das gleiche Spiel durchzieht (nur von Spalte Y zu Spalte 1), dann würde sich meiner Meinung nach ein gutes Bild ergeben...
Aber wie gesagt: Unstudiert und nicht getestet, war nur nen Bauchgefühl