部屋i,j∈{1,...,R}と部屋の集合S⊆{1,...,R}が与えられたとき、iからjへの経路でSに含まれるすべての部屋をちょうど1回ずつ通るものの数をf(i,j,S)とする。部屋jに隣接する部屋の集合をN(j)とすると、fの漸化式は
f(i,j,S)=⎩⎨⎧1∑k∈S∩N(j)f(i,k,S∖{j})0(S={i}={j})(i,j∈S)(それ以外)
と書ける。さらに、aijを部屋iからjへの経路の総数として行列A=(aij)∈ZR×Rを与えると、aijはfを使って
aij=S⊆{1,...,R}∑f(i,j,S)
と書ける。DPすればAはO(R32R)で求まる。
さて、ある階の部屋iからひとつ下の階の部屋jへの経路の総数は∑k=1Raikakjで求まり、これはA2のi行j列に等しい。帰納的に、H階の部屋1から1階の部屋1への経路の総数はAHの第1行第1列に等しいことがわかる。全体の計算量はO(R32R+R3logH)。