话说之前,说法就是向前探索,如果探索不下去,就往回走,然后选新的探索方向,类似于迷宫的求解。
其实呢,这只是回溯法里面搜索方式,不是它的本质。
首先啊,把解空间转化为树的结构,在树中,用DFS搜索求解,在遍历的过程中剪枝。所谓的往回退,就是搜索到不符合条件的叶子节点,就退出搜索。就是之前那种往回退的意思。其实回溯就是递归调用的返回。
回溯的实现方法和DFS一样有两种:递归和迭代。回溯一般用递归的方式求解(实现比较简单)。
树分为子集树和排列树。
在编程中最重要的就是函数参数的设定:
https://blog.csdn.net/weiyuefei/article/details/79316653
https://blog.csdn.net/sinat_27908213/article/details/80599460
https://blog.csdn.net/qq_37763204/article/details/79519671