このゲームのルールを考えると以下のことが言えます.

a1,a2,aka_1,a_2, \cdots a_kkk個のブロックを選んで適切に向きを変える. aja_j個目の幅をxajx'_{a_j},高さをyajy'_{a_j}とする. ここで,このゲームに勝利することと以下の2つの式が成立することは同値である.

  • xa1+xa2++xak=Hx'_{a_1}+x'_{a_2}+ \cdots + x'_{a_k}=H
  • ya1+ya2++yak=Wy'_{a_1}+y'_{a_2}+ \cdots + y'_{a_k}=W

これは22変数の部分和問題に帰着することができるので.動的計画法を用いて条件を満たす選び方が存在するかどうかを確かめればよいです.

計算量は時間空間ともにO(NHW)O(NHW)です.