其他分享
首页 > 其他分享> > 回溯法实现各种组合的检索:

回溯法实现各种组合的检索:

作者:互联网

今天接触到了回溯法,自己的感觉是这种算法对于某些问题非常合适,比穷举法要有迹可循,而且可以靠到我们学的二叉树等等数据结构上,所以在这里写下自己的理解。

我理解的回溯法其实相当于穷举法的进阶版,它和穷举法解决的问题有些像,比如列出所有可能的组合,尝试找到某种最优解(实在没有啥规律时),但是不同于穷举法,它的实现有点像递归的那种形式,就是按照某种顺序不断前进,但是每前进一步都面临许多情况,所以就把当前的情况当作一个可以继续探索的节点,然后暂时先选一个继续前进直到头,当走到头时,不管有没有走通,回到当时的可探索节点,选择其他的情况继续探索,以此不断前进探索每一个节点。

我上面的描述其实并不规范,但是也说出来了回溯法的许多特点,递归,层次,深度优先搜索,多叉树,其实在用回溯法解决问题的时候搜索方式和对解决问题节点的组织非常容易想到深度搜索和树上。

下面是我在牛客上遇到的一个例题和比较好的实现:

给出一组候选数 C 和一个目标数 T,找出候选数中起来和等于 T 的所有组合。
C 中的每个数字在一个组合中只能使用一次。   注意:

标签:检索,10,vector,20,组合,穷举法,res,num,回溯
来源: https://www.cnblogs.com/honor260/p/14118412.html