深度优先搜索(DFS: Depth First Search)
Posted jawide
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度优先搜索(DFS: Depth First Search)相关的知识,希望对你有一定的参考价值。
深度优先搜索是一种树的遍历方式。与此对应的是广度优先搜索。
?
二叉树的优先搜索:
?
如何把一个数学问题转换为树的深度优先搜索问题:
例如:各位数之和为偶数的一个10位二进制数有几个。
我们来分析一下这个问题,首先一共有10位数,然后每一位数都只有两种状态0,1
这可以看做是一个深度为10的一个二叉树,然后用树的深度优先搜索即可解决问题。
?
用C语言实现的代码结构
void DFS(int depth) { ????if(depth==10)????????//递归出口 ????{ ????????//do something????????//对全部层进行操作 ????????return; ????} ????for(int i=0; i<2; i++)????????//这是一个二叉树 ????{ ????????//do something????????//对该层进行操作 ????????DFS(depth+1);????????//进入下一层 ????} } |
?
完整代码
#include <iostream> ? using namespace std; ? int a[10]={}; int count=0; ? void DFS(int depth) { ????if(depth==10) ????{ ????????int sum=0; ????????for(int i=0;i<10;i++) sum+=a[i]; ????????if(sum%2==0) ????????{ ????????????count++; ????????} ????????return; ????} ????for(int i=0;i<2;i++) ????{ ????????a[depth] = i; ????????DFS(depth+1); ????} } ? int main() { ????DFS(0); ????cout << count << endl; ????return 0; } |
以上是关于深度优先搜索(DFS: Depth First Search)的主要内容,如果未能解决你的问题,请参考以下文章
python实现基础的深度优先搜索(DFS, depth first search)解决数的全排列问题
图论DFS(Depth First Search)Algorithm深度优先搜索遍历空间平面图选择路径,networkx,Python
图论DFS(Depth First Search)Algorithm深度优先搜索遍历空间平面图选择路径,networkx,Python