/*
1:骑士的走法:沿四个方向中的某个方向走两步,然后转90度,即“L”路线。
如果骑士当前坐标是(i,j),骑士可走的位置包括(i+2,j+1)、(i+2,j-1)、
(i-2,j+1)、(i-2,j-1)、(i+1,j+2)、(i-1,j+2)、(i+1,j-2)、(i+1,j-2)八个
位置
2:8*8的棋盘至少走63步,如果用递归的话,就是嵌套至少63层循环,效率不高
3:用栈保存步骤,然后用回溯法。
4:如果人为控制棋子:
(1)记录当前位置,在可走的位置(根据当前位置计算)任选一个【选择步数最少
的一个(贪心算法?)】,移动棋子,并将选择的位置记录为走过的位置(修改标志
为1)
(2)终止条件:棋盘全部标记为1或者回到了初始位置之后没有可供选择的位置
(3)如果当前位置没有可走的位置,将当前位置标志置为0,并将棋子返回到当
前位置的上一个位置
*/
#include "stdio.h"
1:骑士的走法:沿四个方向中的某个方向走两步,然后转90度,即“L”路线。
如果骑士当前坐标是(i,j),骑士可走的位置包括(i+2,j+1)、(i+2,j-1)、
(i-2,j+1)、(i-2,j-1)、(i+1,j+2)、(i-1,j+2)、(i+1,j-2)、(i+1,j-2)八个
位置
2:8*8的棋盘至少走63步,如果用递归的话,就是嵌套至少63层循环,效率不高
3:用栈保存步骤,然后用回溯法。
4:如果人为控制棋子:
(1)记录当前位置,在可走的位置(根据当前位置计算)任选一个【选择步数最少
的一个(贪心算法?)】,移动棋子,并将选择的位置记录为走过的位置(修改标志
为1)
(2)终止条件:棋盘全部标记为1或者回到了初始位置之后没有可供选择的位置
(3)如果当前位置没有可走的位置,将当前位置标志置为0,并将棋子返回到当
前位置的上一个位置
*/
#include "stdio.h"
typedef struct{
int i;
int j;
}SNode;
int i;
int j;
}SNode;
int pass=1; //记录走过的点数
SNode path[100]; /
SNode path[100]; /