DFS(深度优先搜索)
引入:为什么要搜索解决问题?
因为很多问题并不可以直接计算出结果,需要遍历所有情况才能发找到最优解或者可行解。
深度优先搜索:
采用递归的方法,先沿一条路搜到底,在递归回上一个节点,沿另一个方向搜索,以此类推。
类似于树的先根遍历;
思想:一直往深处走,直到找到解或者走不下去为止
模板:
int MAXN=0;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
bool can_move(int x,int y)
{
if(...) //越界情况
return false;
if(...) //非法情况
return false;
return true;
}
void dfs(int x,int y,int ans)
{
if(x==ex&&y=ey)
{
MAXN=max(MAXN,ans);
}
visit[x][y]=1;
for(int i=0;i<4;i++)
{
int tx=x+dx[i];

博客探讨了在解决问题时为何需要搜索,并详细介绍了深度优先搜索(DFS)的基本原理和递归实现。DFS类似树的先根遍历,始终深入搜索直至找到解或无法继续。此外,还讲解了剪枝的概念,包括最优化剪枝和可行性剪枝,并以一个N城市、有限金钱的最短路径问题为例,说明如何在DFS中应用剪枝以优化搜索效率。
最低0.47元/天 解锁文章

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



