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

 

 

 

posted @ 2018-01-04 15:01  MekakuCityActor  阅读(179)  评论(0编辑  收藏  举报