深度优先搜索

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

深度优先搜索(dfs)

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

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

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

第一步:穿红色衣服

第二步:喝牛奶

第三步:401

或者

第一步:穿红色衣服

第二步:喝牛奶

第三步:402

······

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

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

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

void dfs(int step)
{
    if(step == 边界) 
    {····return;}判断边界;
    扩展for(i=1;i<=n;i++)
    {
    dfs(step + 1);下一步
    }
    return;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值