首页 > 其他 > 详细

迷宫问题,打印所有路径,深度搜索,dfs

时间:2021-04-06 21:17:50      阅读:36      评论:0      收藏:0      [点我收藏+]
#include<iostream>
using namespace std;
int maze [5][5] = {
0, 1, 0, 0, 0,
0, 1, 0, 1, 0,
0, 0, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 0, 0,
};
typedef struct  
{int x;int y;}Point;
int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};
Point path[40];int len=-1;
void dfs(int x,int y)
{

	int k,nx,ny;
	maze[x][y]=1;
	path[++len].x=x;path[len].y=y;
	if(x==4 && y==4){//结束条件 
	    cout<<"one case:"<<endl;
	    for(k=0;k<=len;k++)
		     cout<<path[k].x<<‘\t‘<<path[k].y<<endl;
    }
	else
    for(k=0;k<4;k++)
	{
		nx=x+dir[k][0];ny=y+dir[k][1];//下一位置(nx,ny)
		if(nx>=0 &&nx<5 &&ny>=0 && ny<5 && maze[nx][ny]==0){
			dfs(nx,ny);	
		}
	}
	maze[x][y]=0;//把(nx,ny)尝试后清除当前标记 
	len--;	
	
}
int main()
{
   dfs(0,0); 
} 

  

迷宫问题,打印所有路径,深度搜索,dfs

原文:https://www.cnblogs.com/ewitt/p/14623119.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!