洛谷 题解 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

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

被折叠的 条评论
为什么被折叠?



