深度优先搜索

今天就把我所学的一种算法整理一下,加深一下理解

深度优先搜索(dfs)

先举个例子:今天早上起床洗漱,挑选今天要穿的衣服(第一步),去食堂吃早餐,吃什么好呢,得想想再决定(第二步),到达教室楼,又得寻找教室自习(第三步)······还有更多的行程就不再说了,看吧,每到一步就得进行一次选择,因为每一步都有不同的情况,那么一天的行程就有很多种情况。

深度优先搜索就是将所有可能的情况都例举出来,有点像枚举,但在某些时候比枚举更加的方便。

例如:衣服有红、蓝和绿三种颜色,早餐有,牛奶、面包和饼干三种,自习室有401、402和403三个教室。

第一步:穿红色衣服

第二步:喝牛奶

第三步:401

或者

第一步:穿红色衣服

第二步:喝牛奶

第三步:402

······

每一步做完,下一步就是一种扩展,探寻不同的情况;

以上的举得例子并不是很严谨,主要是为了加强理解,事实上每一步扩展的东西应该是相同的。

下面的这段代码就是dfs的基本模型

void dfs(int step)
{
    if(step == 边界) 
    {····return;}判断边界;
    扩展for(i=1;i<=n;i++)
    {
    dfs(step + 1);下一步
    }
    return;
} 
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页