POJ 4123 马走日
思路
用一个二维int horse[8][2]来存8种走法
用二维bool pan[13][13]来存棋盘
每次只将正中间的9×9里的 n×m 个棋盘设为1,其余都清零
然后dfs遍历即可
DFS函数
1.出口,已经走的步数=棋盘点的总数-1
2.递归,for循环8种走法:修改->递归->重置
代码:
void dfs(int x,int y)
{
if(step==sumstep)
{
sum++;
return;
}
for(int i=0;i<8;i++)
{
int xx=x+horse[i][0],yy=y+horse[i][1];
if(pan[xx][yy])
{
step++;
pan[xx][yy]=0;
dfs