求助,关于深度优先探索和广度优先探索的一个问题
大家好,最近遇见一个问题,
问题类似是这样的,比如一张T(NxN)地图,可走点用(x,y)=0表示,不可走的点用(x,y)=1表示,
每一步都可以往上下左右四个方向行走,请问从初始点(0,0)到目标点(x,x),
求有多少种走法(不考虑走回头路),并罗列出来
我感觉和深度优先探索算法的寻找路径有些相似,
但是深度优先探索只提供一个结果(一条路径)的吧,
但是我想知道所有可能的结果(所有可能路径),
请问各位有什么思路,或者有处理过类似问题的提供下算法思想,感谢!
[解决办法]
就用BFS啊 DFS也行啊
[解决办法]
这个问题。。。BFS(广搜) DFS(深搜)都是可以做的
首先有一个问题。。。你说的不考虑走回头路是指已经走过的点不能再走吧。。
以下讲述就在此基础上
1.深搜的时候,如果搜到目标点,则输出当前路径,返回(即返回到上一个点,继续搜索,即可搜到所有路径)
2.广搜的时候,每个点都要记录路径,需要注意判断下一步的点是否走过。。我没想到太好的判断方法
[解决办法]
走法的话数量可能很多,广搜 + DP可以,记忆化搜索也可以。举个简单的例子,比如40*40的矩阵,左上到右下的走法数量为137846528820,如果用单纯的搜索的话就太慢,用杨辉三角来算就快很多。这个问题也是一样的,需要记录搜索过的点的数量,减少重复的计算。
[解决办法]
这个应该不用上升到图的概念来理解就可以了,直接利用递归思想就可以了吧,递归入口就是第一个点开始,出口就是判断是否到头,然后中间向左或者向下走就是了吧
[解决办法]