将马随机放在5×5棋盘的某个方格中,马按走棋规则(马走日)进行移动。要求每个方格只进入一次,走遍棋盘上全部25个方格则称为周游或踏遍棋盘。现在请你编程判断从给定的方格开始是否可以踏遍棋盘。马的走法见下图,图中的马可以跳到0~7这8个位置。
用一个二维数组来存放棋盘,假设马儿的坐标为(x,y),那么可供选择的下一个位置共有8种可能。我们所要做的,就是从0号位置开始,依次判断新的马儿位置是否可用,不可用的话(即马儿已经走过该位置),则遍历下一个可能的1号位置,直到7号位置停止。如果没有可用位置,则进行回溯,如果回溯到了起始位置,则表示此路不通,即无法从该位置开始遍历整个棋盘。如果在遍历0-7号位置的过程中,发现有可用位置,则将该位置坐标赋予(x,y),马儿跳的次数加1。之后,利用递归,再次寻找马儿的新的跳跃位置。直到马儿跳了25次时停止,此时,马儿就已经将整个棋盘走过了。