回溯三步走
输入输出/终止条件/单层递归回溯逻辑
对于backtracking函数来说需要有一个start index
这个start index是用来看每次遍历的头是哪个 例如1为头组合 2为头组合...
停止条件是当记录的path的size和要求的k是一样的时候
把当前path放入result集中;
对于每个递归过程中都要假如这个点
同样当递归返回上册之后 要把刚刚的值pop出去 这样就避免了1234这样的情况

这里可以进行剪枝

k 是 要求的个数
path.size()是当前path集中的个数
k - path.size() 剩余可以放入的个数
n - (k - path.size())就代表了在n中还有多少能放
这里的+1是为了保证左边可以放进来
跟上面的情况是相似的
只是跟改了返回时的条件
这里叠加值sum也要在回溯的时候复原
其余的剪枝逻辑都是一样的


702

被折叠的 条评论
为什么被折叠?



