ナイトの巡歴問題とは、M行N列(以下、M×Nマスという)の盤面上でチェスの駒の一種であるナイトを移動させ、全てのマスを1回ずつ通過する経路を発見する問題である。ナイト(K)が1回で移動できるマス(以下、移動先という)の位置を図1に示す。また、4×3マスの場合のナイトの巡歴問題の解の一つを図2に示す。図2に示す、ナイトの移動する順序を表す数を、移動順序という。なお、行番号は上から下、列番号は左から右に増加する。M×Nマスのナイトの巡歴問題について、行1列1のマスを起点とする全ての経路を求める処理の概要を示す。この処理は、再帰による深さ優先探索として実現されている。

設問1 表1中のアとイに入れる適切な移動量を答えよ。

設問2 図3中のウ~キに入れる適切な字句を答えよ。

設問3 〔盤面の表現の変更〕について、(1)~(3)に答えよ。

(1) 本文中の下線①について、関数printBoardのプログラムで変更が必要な行の行番号と、変更後のプログラムを、2か所答えよ。

(2) 本文中の下線②について、メインプログラムで変更が必要な行の行番号と、変更後のプログラムを、1か所答えよ。

(3) 本文中の下線③について、再帰関数searchのプログラムで削除することが必要な行の行番号を全て答えよ。