2012-01-22 13 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

Re:サブセットの合計問題は、最初のブロックを使用してくださいサイズが最大になるまでサイズを変更して、コンテナに収まるようにサイズを確認し、他のサイズと比較して大きさを確認します。 –

関連する問題