在搂主原版的代码上改了visit函数:
#include <stdio.h>
#include <stdlib.h>
int maze[100][100]={0};
static int step=0;
int endx,endy,m,n;
int flag;
int visit(int startx,int starty)
{
//i=startx,j=starty
maze[startx][starty]=2;
if(startx==endx&&starty==endy)
flag=1;
if(maze[startx][starty+1]==0&&starty<n&&flag==0)//right
{
step++;
visit(startx,starty+1);
}
if(maze[startx+1][starty]==0&&startx<m&&flag==0)//down
{
step++;
visit(startx+1,starty);
}
if(maze[startx][starty-1]==0&&starty>1&&flag==0)//left
{
step++;
visit(startx,starty-1);
}
if(maze[startx-1][starty]==0&&startx>1&&flag==0)//up
{
step++;
visit(startx-1,starty);
}
if(flag==1)
return step;
return step--;
}
void print_maze(int m,int n)
{
int i,j;
printf("print the maze map:\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(j%5==0)
printf("\n");
printf("%d ",maze[i][j]);
}
system("pause");
}
int main()
{
int i,j;
int startx,starty;//startXY
scanf("%d %d",&m,&n);// line&column
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
scanf("%d",&maze[i][j]);//
//print_maze(m,n);//
scanf("%d %d",&startx,&starty);
scanf("%d %d",&endx,&endy);
if(visit(startx,starty)==0)
printf("No Answer!\n");
else
printf("step=%d",step);
system("pause");
return 0;
}