web-dev-qa-db-ja.com

PHP)の簡略化されたナップザック

情報を「揃えられた」配置で表示したい場合が2つありますが、値が順番に入れ替わっていてもかまいません。オンラインで人々のユーザー名を表示する1つの例:

Anton Brother68 Commissar Dougheater Elflord Foobar Goop Hoo Iee Joo

それらを再配置すると、各行で正確に22文字の長さになります。

Anton Brother68 Foobar
Commissar Elflord Goop
Dougheater Hoo Iee Joo

これは一種のナップザックですが、完璧を気にせず、複数の行があるため、Pソリューションがあるはずです。

2番目のインスタンスは同じですが、名前と文字数の代わりにランダムな画像を表示し、その幅を使用する点が異なります。

3
Mikhail

たとえば、全長を取得し、最大行サイズで割って、行数を決定します。名前のリストを長さの降順で並べ替えます。ソートされたリストから最長の名前を繰り返し削除し、これまでの最短の行に追加します。行にすべての名前を追加したら、順序をランダムにするか、行内でアルファベット順に並べ替えて見栄えを良くすることができます。

これは、最適解の非常に近い近似です。

1
Kevin Peterson

配置されたすべての単語の効用が1であるため、ナップサック問題のようには感じません(間違っている場合は訂正してください)。

おそらく代わりにビンパッキング?

1
Jonno