bool doMaze(int m,int n, int matrix[][6], int x,int y)
{
if(!x&&!y)
{
cout<<"("<<x<<","<<y<<") ";
return true;
}
bool flag=false;
//go left
if(y>0&&!matrix[x][y-1])
{
matrix[x][y-1]=1;
flag = doMaze(m,n,matrix,x,y-1);
if(flag)
{
cout<<"("<<x<<","<<y<<") ";
return true;
}
matrix[x][y-1] = 0;
}
//go right
if(y<n-1 && !matrix[x][y+1] )
{
matrix[x][y+1] = 1;
flag = doMaze(m,n,matrix,x,y+1);
if(flag)
{
cout<<"("<<x<<","<<y<<") ";
return true;
}
matrix[x][y+1] = 0;
}
//go up
if(x>0 && !matrix[x-1][y] )
{
matrix[x-1][y] = 1;
flag = doMaze(m,n,matrix,x-1,y);
if(flag)
{
cout<<"("<<x<<","<<y<<") ";
return true;
}
matrix[x-1][y]=0;
}
//go down
if(x<m-1 && !matrix[x+1][y] )
{
matrix[x+1][y] = 1;
flag = doMaze(m,n,matrix,x+1,y);
if(flag)
{
cout<<"("<<x<<","<<y<<") ";
return true;
}
matrix[x+1][y]= 0;
}
return flag;
}
void maze()
{
const int m = 7;
const int n = 6;
int matrix[m][n]={
0,1,1,1,1,1,
0,1,1,1,1,1,
0,1,1,1,1,1,
0,1,1,1,1,1,
0,0,0,0,1,1,
0,0,1,0,1,1,
1,1,1,0,0,0
};
if(!doMaze(m,n,matrix,m-1,n-1))
cout<<"no path found"<<endl;
}
打印迷宫路径
最新推荐文章于 2024-04-09 16:14:47 发布