当问题说到一共有n个数/n个选择,且按顺序依次选择时,一般都会用到这样的dfs模板

dfs(index,state){if(index==n)return;if(state not valid)cut; for(choice):dfs(index+1,f(state,g(index)));
}

比如说8皇后问题:从8行依次做出选择,选择8次。状态参数为vis标记。

等等........

下面说说我对这个模板的理解:

首先,if放在dfs前面,就是说在选择之前就做了判断,这是什么意思呢?

(1)每一次dfs时,index总是增1,因为dfs调用的本质是做了一次选择,所以index参数可以理解为做选择的次数。当index传入0时,因为要做n次选择,所以index==n时才会return,而不是在n-1时return

(2)如果传入0,那么if判断时,选择的次数是已经选择的下标+1。因为下标0也算一次选择,所以下标0选择完后,在if判断时index为1,以此类推。

(3)状态参数就是做了index次选择后的状态。因为状态参数在做选择的时候更新,所以在if判断

时,对应的状态就是做了index次选择的状态(index初始传入0)

(4)因为在没有改变参数的值,所以这个模板自带回溯功能。

做了3次选择后,if判断时,index为3,下标为2的已经做完选择,状态参数是0~2状态。

【DFS笔记】对dfs(index,状态)一类问题的思考相关推荐

  1. c++输出方块_C/C++编程笔记:DFS 深度优先搜索的基本思想,含实例讲解

    采用搜索算法解决问题时,需要构造一个表明状态特征和不同状态之间关系的数据结构,这种数据结构称为结点.不同的问题需要用不同的数据结构描述. 根据搜索问题所给定的条件,从一个结点出发,可以生成一个或多个新 ...

  2. 何时使用hadoop fs、hadoop dfs与hdfs dfs命令

    hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后 ...

  3. 何时使用hadoop fs、hadoop dfs与hdfs dfs命令(转)

    hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后 ...

  4. Git笔记(5) 状态记录

    Git笔记(5) 状态记录 1. 文件的状态变化周期 2. 检查当前文件状态 3. 跟踪新文件 4. 暂存已修改文件 5. 状态简览 6. 忽略文件 7. 查看已暂存和未暂存的修改 7.1. 查看未暂 ...

  5. 蓝桥杯笔记:DFS(深度优先搜索)解决问题

    DFS: 深度优先搜索: 访问当前的元素后,递归访问元素的邻接元素(找出所有下一步的可能元素,判断是否能访问),撤回当前元素访问 dfs(当前状态) {//递归终止条件if(当前状态==结束状态) { ...

  6. DFS 简单的剪枝和状态压缩 海贼王之伟大航路

    今天碰到了这样一道题目,是一个关于深搜的题目 4124:海贼王之伟大航路 查看 提交 统计 提示 提问 总时间限制:  1000ms  内存限制:  65536kB 描述 "我是要成为海贼王 ...

  7. Principle of Computing (Python)学习笔记(7) DFS Search + Tic Tac Toe use MiniMax Stratedy

    1. Trees Tree is a recursive structure. 1.1 math nodes https://class.coursera.org/principlescomputin ...

  8. python 拓扑排序 dfs bfs_bfs与dfs的优缺点?

    刚好今天作业有道题问了相似问题= =,顺便来回答一下 DFS和BFS主要差别在于BFS遍历方式是围绕着根结点一圈一圈(level by level)向外遍历,借助队列的方式实现,而DFS的方式则是从一 ...

  9. Head First设计模式读书笔记九 第十章 状态模式

    过去的笔记链接 https://blog.csdn.net/u011109881/article/details/60158137 状态模式实例 用Java设计糖果机吧 大致流程: 上图中,有四种状态 ...

最新文章

  1. 程序员之路,蛇年快加速!
  2. ROS学习笔记九:ROS工具
  3. 2017年10月23日23:58:04
  4. linux 查看服务器网络连接,1.3.2 查看Linux服务器的网络连接(2)
  5. API标准化成为技术团队面临的最大挑战
  6. java 方法 示例_Java语言环境getDisplayCountry()方法与示例
  7. 《iOS网络编程与云端应用最佳实践》微博转发送书了!
  8. OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)
  9. 利用ssh-copy-id无需密码登录远程服务器
  10. C# 从Object对象中读取属性的值
  11. webpack遇见的坑:Please install 'webpack-cli' in addition to webpack itself to use the CLI.
  12. 斐讯K2破解任意校园网教程
  13. 破局:技术视野与规划
  14. LMV324MTX单通道,双通道和四通道通用低电压轨至轨输出运算放大器TI
  15. PG中XLOG日志结构
  16. SQL grouping
  17. 人工智能就业方向及前景,前景如何?好就业吗?
  18. 解决java编译错误( 程序包javax.servlet不存在javax.servlet.*)
  19. 常见的200,404,503等HTTP状态码大全
  20. 向日葵远程看不到qq界面

热门文章

  1. 【转】Update: Android.mk 中的 LOCAL_SRC_FILES, LOCAL_C_INCLUDES
  2. ASP.NET MVC3+EF4+Oracle入门实例(一)
  3. HDU2566 统计硬币【暴力】
  4. CCF201912-2 回收站选址(100分)【序列处理】
  5. 树莓派3B+64位系统烧制与软件安装
  6. HDU1235 统计同成绩学生人数【水题+序列处理】
  7. CCF NOI1032 菱形
  8. 学术论文写作的 paper、code 资源
  9. 逻辑学 —— 复杂问题谬误
  10. 【清单】语言、框架及库的官方文档、examples、tutorials