dfs、遍历与for

dfs实际上就是若干个递归式连续使用,从而把所有情况全部遍历的方法

首先是递归式的连用,然后注意参数的选取以及变化就行了

1、参数一般有状态参数与开关参数

     最简单的dfs就是每次选择只是改变自身状态(改变状态只需要将状态参数(如金币)改变掉就行了) 此时将若干种情况简单罗列,于递归式中改变状态参数的值即可

     稍复杂的就是每次的状态会影响下一次的选择范围(如不能连续两次选择2这个数字),这时形参中就需要使用一个开关参数,把取2与不取2的情况分隔开

2、使dfs升华的是与for的连用,

     普通dfs的步长一般是固定的,这也就导致某些选择的间距不同的问题不能被解决,

     而在dfs中加入for之后能让dfs灵活地控制状态参数的步长(如冰球问题,遇到障碍之后才能改变方向,而不是每一步都能改变)

     POJ冰球问题http://poj.org/bbs?top=342174&problem_id=3009

 

 

 

转载于:https://www.cnblogs.com/MekakuCityActor/p/8193449.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值