#include "stdafx.h "
#define MAX 5
int a[MAX][MAX];
int b[MAX*MAX],c[MAX*MAX];
int scheme;
//显示符合规则的跳马方案
void print(void)
{
int i;
for(i=0;i <MAX*MAX-1;i++)
printf( "(%d,%d) ",c[i],b[i]);
//统计方案总数
++scheme;
printf( " ");
}
//跳马函数,通过递归调用,寻找下一步的位置
int horse(int x,int y,int step)
{
int i,j;
//标识棋子在棋盘中的当前位置已跳过
a[x][y]=1;
//记录棋子在棋盘中的当前位置
b[step]=x;
c[step]=y;
//判断是否找到符合规则的完整的跳马方案(跳马步数为24步时)
if(step> =MAX*MAX-1)
print(); //打印完整的跳马路径
//寻找下一步位置,共有八种可选位置,逐一迳行试探,
//如果符合要求(此位置不越界,在棋盘内,且此点未被跳过),
//则继续递归调用寻找此位置的下一位置,如此点不符合要求,
//则返回 0,递归回退。
if((i=x+1)> =0 && (i=x+1) <MAX && (j=y+2)> =0 && (j=y+2)