#include
#include
#include
#include
using namespace std;
int x[]={-1,-1,-2,-2,2, 2,1, 1};
int y[]={-2, 2, 1,-1,1,-1,2,-2};
int count,sx,sy;
int chess[5][6];
//回溯法==深搜
void dfs(int p1, int p2)
{
int pi,pj;
for(int i=0;i<8;i++)
{
pi=p1+x[i];
pj=p2+y[i];
if(chess[pi][pj]==0 && pi>=1 && pj>=1 && pi<=4 && pj<=5)
{
chess[pi][pj]=1;
dfs(pi,pj);
chess[pi][pj]=0;
} //主要是针对起点的第二次访问
else if(pi==sx && pj==sy)
{
count++;
}
}
}
main()
{
memset(chess,0,sizeof(chess));
count=0;
scanf("%d,%d",&sx,&sy);
cout<<"sx="< cout< if(sx>=5||sy>=6 ||sx<1 || sy<1)
{
printf("Error\n");
return 0;
}
chess[sx][sy]=1; //一定要对起点初始化,表示第一次访问完成了,
//因为本算法就是依靠第二次回到起点来结束的
dfs(sx,sy);
cout<}
阅读(792) | 评论(0) | 转发(0) |