洛谷 题解 P1605 【迷宫】

本文是关于洛谷P1605【迷宫】题目的深度优先搜索(DFS)解题思路解析,主要涉及如何使用DFS解决路径数量的问题。文中详细介绍了main函数部分、DFS数组的使用,并强调了vis数组的重要性。

洛谷 题解 P1605 【迷宫】

题目

深搜经典例题,必须掌握!

简单说一下深搜,就是一条路走到底,发现不行了就往回走,再走另一条路,直到不能走为止

深搜做迷宫有三大题型:能不能走;怎么走;路径数量,显然这题考的就是路径数量

那怎么做呢? 老样子,一个一个部分来讲解

一、main 函数部分

   ① 把已知条件转化为一个二维数组
cin >> n >> m >> t >> sx >> sy >> fx >> fy;
	for (int i = 1; i <= n; i++){
   
   
		for (int j = 1; j <= m; j++){
   
   
			maze[i][j] = '.';
		}
	}
	maze[sx][sy] = 'S';
	maze[fx][fy] = 'T';
	for (int i = 0; i < t; i++){
   
   
		int x, y;
		cin >> x >> y;
		maze[x][y] = '*';
	}
    ②深搜就完事了
dfs(sx, sy);
	cout << ans << endl;
	return 0;

注:ans是全局变量,指的是路径数目

二、dfs数组

   ① 判断临界条件:如果到达终点就算完事
if (maze[x][y] == 'T'){
   
   
		ans++;
		return;
	}
  ② 建立一个方位数组并进行循环
int dir
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值