:あなたは、サイズの1 * 1 * 1、1 * 1 * 2、1 * 1 をレゴブロックの4種類がありレゴブロック - 動的計画
を* 3と1 * 1 * 4.各タイプのブロックが無限にあるとします。
これらのブロックの高さHと幅Mの壁を作りたいとします。 壁に穴があってはなりません。あなたが構築する壁は の1つの立体構造でなければなりません。頑丈な構造とは、壁を構築するために使用されたレゴブロックを切断することなく、任意の垂直線に沿って壁を切り離すことが可能であることを意味するものではありません。 ブロックは水平方向にのみ に配置できます。壁は何通り建てられますか?ここで
私はそれをしようとしています方法です:BはD = で* 1 * 1 1、* 1 * 2、* 1 1 * 3と1 * 1 * 4ブロックを表す 。有効なパターンは太字で示しています。無効なパターンは、縦線で壊れる可能性があります。
H = 1 & W = 3 #validパターン= 1
AA、AB、BA CH = 2 & W = 3 #validパターン= 9
私はH = 3の値を見つけるためにheightまたはwidth.ieでこれを拡張するために繰り返しパターンを見つけようとしています& W = 3またはH = 2 & W = 4。
身長と体重による成長のフォーミュラ化の方法についての情報はありますか?
P.壁は常にH * W * 1です。
明確化(適切なメモ化と定時刻演算を仮定して)計算する
O(W^2)
アルゴリズムを提供する:壁は 'のM * Hの*のINF' M * H * 1 'ブロックであり、又は'ブロック?私は前者を仮定しているので(パターンの数は有限です)、パターンの表記がどのように機能するかはわかりません。 1x3の唯一の有効なパターンは 'b'ではなく' c'です。 –私が考えることができる最良のものは 'O(4^H)'状態のマルコフ連鎖です。それは良い(またはそれですか?)です。 –
これはパレットローディングの問題によく似ています。これはNP-Completeです。私は多項式時間で正確な解を見つけられるとは思わない。 – AndyG