练习专区

今天的一小步就是明天的一大步
Problem 1711 骑士周游问题
Accepted: 0   Total Submit: 6
Time Limit: 1000ms   Memory Limit: 30720KB
Description
将马随机放在5×5棋盘的某个方格中,马按走棋规则(马走日)进行移动。要求每个方格只进入一次,走遍棋盘上全部25个方格则称为周游或踏遍棋盘。现在请你编程判断从给定的方格开始是否可以踏遍棋盘。马的走法见下图,图中的马可以跳到0~7这8个位置。 用一个二维数组来存放棋盘,假设马儿的坐标为(x,y),那么可供选择的下一个位置共有8种可能。我们所要做的,就是从0号位置开始,依次判断新的马儿位置是否可用,不可用的话(即马儿已经走过该位置),则遍历下一个可能的1号位置,直到7号位置停止。如果没有可用位置,则进行回溯,如果回溯到了起始位置,则表示此路不通,即无法从该位置开始遍历整个棋盘。如果在遍历0-7号位置的过程中,发现有可用位置,则将该位置坐标赋予(x,y),马儿跳的次数加1。之后,利用递归,再次寻找马儿的新的跳跃位置。直到马儿跳了25次时停止,此时,马儿就已经将整个棋盘走过了。
Input
输入有多组,每组数据包括两个正整数X和Y,表示马儿的起始坐标。
Output
输出从起始坐标(X,Y)开始是否可以踏遍棋盘,是就输出“Yes”,否则输出“No”。
Sample Input
0 0
1 0
2 0
3 0
Sample Output
[0,0]:Yes
[1,0]:No
[2,0]:Yes
[3,0]:No
Hint
提交     返回