2012-01-22 38 views
0

我有一個容器,具有一定的寬度和高度。我有一堆我需要適合容器的塊,但我需要計算這些塊可以適合的最大尺寸。找到填充容器的矩形的最大尺寸

例如:

enter image description here

到:

enter image description here

我猜它類似於此question,但他的代碼是jQuery和適用於文本。我只是想僞代碼或某種形式的如何做到這一點的算法。

+1

你對這些街區有什麼瞭解?從圖中可以看出,它們都具有相同的高度和方向。這是一個有效的假設嗎? – PengOne

+0

所有塊都是相同的高度,但寬度各不相同,必須是相同的方向 –

+0

,他們都必須在相同的規模上調整大小。 –

回答

1

假設,如圖所示,所有塊具有相同的高度和方向,您可以創建一個具有塊長度的數組A

如果目標是在給定的邊界矩形中將塊優化打包,那麼求解subset sum problem以找到最大長度最接近但沒有更大的塊集。刪除第一行的那些塊,並用剩餘的塊重複該過程。

如果目標是找到最小的(按面積)邊界矩形,那麼您應該看看這篇論文:Fast Optimizing Rectangle Packing Algorithm for Building CSS Sprites。它還涵蓋了塊的高度可能變化的情況。

如果塊可以有不同的方向,那麼問題就更難packing problem

+0

回覆:子集總和的問題,所以使用第一個塊,並保持調整它的大小直到它具有可以放入容器的最大寬度,然後檢查這個尺寸與其他尺寸,如果它們不合適,只需減少並重復? –