急求数据结构(C语言版)马踏棋盘问题解决方案

#include

#include

#defineN5

voidmain(){

intx,y;

voidhorse(inti,intj);

printf(Pleaseinputstartposition:);

scanf(%d%d,&x,&y);

horse(x-1,y-1);

}

voidhorse(inti,intj){

inta[N][N]={0},start=0,

h[]={1,2,2,1,-1,-2,-2,-1},

v[]={2,1,-1,-2,2,1,-1,-2},

save[N*N]={0},posnum=0,ti,tj,count=0;

intjump(inti,intj,inta[N][N]);

voidoutplan(inta[N][N]);

a[i][j]=posnum+1;

while(posnum>=0){

ti=i;tj=j;

for(start=save[posnum];start<8;++start){

ti+=h[start];tj+=v[start];

if(jump(ti,tj,a))

break;

ti-=h[start];tj-=v[start];

}

if(start<8){

save[posnum]=start;

a[ti][tj]=++posnum+1;

i=ti;j=tj;save[posnum]=0;

if(posnum==N*N-1){

//outplan(a);

count++;

}

}

else{

a[i][j]=0;

posnum--;

i-=h[save[posnum]];j-=v[save[posnum]];

save[posnum]++;

}

}

printf(%5d,count);

}

intjump(inti,intj,inta[N][N]){

if(i=0&&j=0&&a[i][j]==0)

return1;

return0;

}

voidoutplan(inta[N][N]){

inti,j;

for(i=0;i<N;i++){

for(j=0;j<N;j++)

printf(%3d,a[i][j]);

printf(\n);

}

printf(\n);

getchar();

}

免责声明:本站发布的游戏攻略(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!