马踏棋盘这个其实很简单,就是判断好八个方向就可以了
<span style="font-family:Microsoft YaHei;font-size:14px;">#include<stdio.h>
#define N 8
int qipan[N][N];
int count=0;
void start(int tx, int ty)
{
if( count>63)
{
return;
}
else
{
//走过的棋盘标记起来
qipan[tx][ty]=1;
//输出
count++;
printf("%d : x=%d ,y=%d\n",count,tx,ty);
//八个方向
if((tx+2<8)&&(ty+1<8)&& qipan[tx+2][ty+1]!=1)
{
start(tx+2, ty+1 );
}
if((tx+2<8)&&(ty-1>-1) && qipan[tx+2][ty-1]!=1)
{
start( tx+2, ty-1 );
}
if((tx-2>-1) && (ty+1<8) && qipan[tx-2][ty+1]!=1)
{
start(tx-2, ty+1 );
}
if((tx-2>-1) && (ty-1>-1) && qipan[tx-2][ty-1]!=1)
{
start(tx-2, ty-1 );
}
if((tx+1<8)&&(ty+2<8)&&qipan[tx+1][ty+2])
{
start(tx+1, ty+2 );
}
if( (tx-1>0) &&(ty+2<8) &&qipan[tx-1][ty+2]!=1)
{
start( tx-1, ty+2 );
}
if((ty-2>-1) && (tx+1<8) && qipan[tx+1][ty-2]!=1)
{
start(tx+1, ty-2 );
}
if((ty-2>-1) && (tx-1>-1) && qipan[tx-1][ty-2]!=1)
{
start(tx-1, ty-2 );
}
}
}
int main()
{
int i,j;
//初始化棋盘
for( i=0; i<N; i++)
{
for( j=0; j<N; j++)
qipan[i][j]=0;
}
int tx;
int ty;
//起始位置,没有判错处理
scanf("%d%d",&tx,&ty);
start(tx,ty);
return 0;
}</span>