深度优先搜索之迷宫寻宝-创新互联

迷宫寻宝

有一个N行M列由单元格组成的迷宫.迷宫中埋藏有宝物,每一个单元格可能为空地,为障碍物,为宝藏.现在请你写一个程序求从起点到宝藏的最短步数.
输入格式:第一行输入N M表示地图的行和列.后面N行输入M个0 或1,0表示空地,1表示障碍物.最后一行输入4个数,前俩个是起点的xy坐标,后俩个是终点的xy坐标.

成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、网站建设、兴安盟乌兰浩特网络推广、微信小程序定制开发、兴安盟乌兰浩特网络营销、兴安盟乌兰浩特企业策划、兴安盟乌兰浩特品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;成都创新互联公司为所有大学生创业者提供兴安盟乌兰浩特建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com代码实现`
#includeint a[100][100],N,M,step =0,X,Y,min=500,book[100][100];//用数组a存储地图,数组book标记,min记录最小步数
void xunbao(int x,int y,int step)
{int x1,y1,b[4][2]={{1,0},{0,1},{-1,0},{1,0}};//四种走法上下左右,顺序无所谓
	if(x==X&&y==Y){//判断是否走到宝藏处
		if (step	min=step;//更新min
			return;
		}	
	}
	for(int i=0;i<4;i++){//枚举四种走法
		x1=x+b[i][0];
		y1=y+b[i][1];
		if(x1<0||y1<0||x1>M-1||y1>N-1){//判断是否出界
			continue;
		}
		if(a[x1][y1]==0&&book[x1][y1]==0){//判断是否有障碍物或者走过
			book[x1][y1]=1;
			xunbao(x1,y1,step+1);
			book[x1][y1]=0;
		}
	}
	return;                            
}
int main()
{int x,y;
	scanf("%d%d",&N,&M);
	for(int i=0;ifor(int j=0;j	scanf("%d",&a[i][j]);
		}
		scanf("\n");
	}
	scanf("%d%d%d%d",&x,&y,&X,&Y);
	xunbao(0,0,0);
	printf("%d",min);
}可以自定义一个地图去验证代码的准确性

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享名称:深度优先搜索之迷宫寻宝-创新互联
文章URL:http://pwwzsj.com/article/dejcpo.html