C语言马走日不重复遍历中国象棋棋盘上每一个位置点

本着乐于助人以及自我锻炼的原则,帮楼主敲了敲代码,还有疑问的话请追问。

#include

#include

typedefstruct

{

intx,y;

}item;

itemmove[4]={{-2,1},{-1,2},{1,2},{2,1}};

intmap[5][9],sx,sy;

//判断是否在地图中,防止越界

intcheckIn(intx,inty)

{

if(x>=0&&x=0&&y<=8)

return1;

return0;

}

//输出最终结果

voidoutput()

{

inti,j;

for(i=0;i<=4;i++)

{

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

printf(%d,map[i][j]);

putchar('\n');

}

printf(共计%d步。,map[0][8]);

}

//从xy开始寻找能否到达终点,能返回1,不能返回0,step表示当前的步数。

intfindPath(intx,inty,intstep)

{

inti;

map[x][y]=step;

//终点

if(x==0&&y==8)

{

output();

return1;

}

//向右边4个方向前进

for(i=0;i<4;i++)

if(checkIn(x+move[i].x,y+move[i].y))

if(findPath(x+move[i].x,y+move[i].y,step+1)==1)

return1;

//四个方向均无法到达终点,回溯并返回0

map[x][y]=0;

return0;

}

intmain(intargc,char**argv)

{

memset(map,0,sizeof(map));

printf(请输入起点\n);

scanf(%d,%d,&sx,&sy);

findPath(sx,sy,1);

return0;

}

希望能够帮助到你,望采纳!

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