本着乐于助人以及自我锻炼的原则,帮楼主敲了敲代码,还有疑问的话请追问。
#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;
}
希望能够帮助到你,望采纳!