请问这个迷宫寻路的dfs算法错哪里了
这个样例答案是10,但以下代码输出6
5 8 0 0 4 6
0 1 1 1 0 0 0 0
0 0 0 1 0 0 0 0
0 1 0 0 0 1 0 0
0 1 1 1 0 1 1 0
1 0 0 0 0 0 0 0
#include<stdio.h>
int startx,starty,endx,endy;
int min=99999;
int m,n,map[30][30]={0}; //m->row n->column
int directx[4]={0,1,0,-1},
directy[4]={1,0,-1,0};
void dfs(int x,int y,int step)
{
int i;
if(x==endx&&y==endy)
{
if(min>step)
min=step;
return;
}
for(i=0;i<4;i++)
{
x=x+directx[i];
y=y+directy[i];
if(x<m&&y<n&&x>=0&&y>=0)
{
if(map[x][y]==0)
{
map[x][y]=1;
dfs(x,y,step+1);
map[x][y]=0;
}
}
}
return;
}
int main()
{
scanf("%d %d %d %d %d %d",&m,&n,&startx,&starty,&endx,&endy);
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",&map[i][j]);
}
map[startx][starty]=1;
dfs(startx,starty,0);
printf("%d",min);
}