あなたはバックトラックに慣れていないので、これを解決する方法がわかるかもしれません:
グリッド上のセルの状態 (訪問済み/未訪問) を表すデータ構造が必要です。
あなたのアルゴリズム:
step(posx, posy, steps_left)
if it is not a valid position, or already visited
return
if it's the last step and you are at the target cell
you've found a solution, increment counter
return
mark cell as visited
for each possible direction:
step(posx_next, posy_next, steps_left-1)
mark cell as not visited
と実行します
step(0, 0, sizex*sizey)
バックトラッキングの基本的な構成要素は、現在の状態の評価、マーキング、再帰ステップ、およびマーキング解除です。
これは、小さなボードでは問題なく機能します。本当の楽しみは、解けない木の枝を切らなければならない大きなボードから始まります (例: 訪問されていないセルの到達不可能な領域があります)。