n 種類の長方形の 3-D ボックスのセットが与えられます。ここで、i^ 番目のボックスは高さ h(i)、幅 w(i)、深さ d(i) (すべて実数) です。できるだけ高さのあるボックスのスタックを作成したいのですが、ボックスを別のボックスの上にスタックできるのは、下のボックスの 2 次元ベースの寸法が 2 次元ベースの寸法より厳密に大きい場合だけです。ハイボックスのDベース。もちろん、ボックスを回転させて、任意の側面がベースとして機能するようにすることもできます。ボックスで複数のインスタンスを使用することはできません。
この質問は SO ( Box stacking problem ) で尋ねられましたが、「繰り返しなし」の制約はありません。LIS を使用してこれをどのように解決しますか。
私は次の解決策を考案しました。議論できますか
H[j] = max(H[j],max(H[i]|i<j, D[j] < D[i] , W[j]<W[i]+ H[j] -H[j'] )
ここで、 h[j'] は、 j 番目のボックスが H[i] の計算に既に使用されている場合に他なりません。回転が許可されているため、H[j] は j 番目のボックスの幅または深さになります。