寒假:dfs(深度优先搜索算法)
一开始对于dfs的认知就和递归差不多,有点抽象,无法理解,在csdn上看了许多的博客,对dfs有了初步的了解,就是爆搜,遍历每一种情况,找到我们所需要的情况。
Dfs就像一棵树,每一次就是沿着树的树枝往下寻找树的分支,当找到最后一个支点,即到了分支的最下端,无法再寻找,然后就会return,返回上一次,上一个支点(这里就比较抽象)。看图。
Dfs其实了解其中的一个环节就可以。(有点难哈!)
Dfs代码中有两点比较重要,第一:判断什么时候结束输出结果,或者结束,都是需要return(可能有两个或者以上的判断);第二:回溯,就是当完成一个过程的时候进行dfs下一个过程,需要状态的还原。(一般需要定义一个数组来判断一个数用没用过啊等等)。
下面就上例子:将3个数放到3个箱子里------对1到3进行全排序。(当然也可以把三改成n,就是会运行比较久)
代码: