和组合问题类似,当前元素仅有两种状态,选或不选,进行简单的剪枝,当前值相加超过总和n或者当前元素值已经大于所需元素值则停止,元素不足时则停止的方式剪枝:
LeetCode-77-组合
解决的方式为:对于序列 [1, n],要从中选取k个元素,那么对于每一个元素的位置实际上就存在这两种状态,第一种选取当前元素,第二种不选取当前元素,此处实际上将问题的划分转变为了一个二分问题,递归的深度也就转变为了n。那么回溯的方式也就发生了改变:选取当前元素向下递归,在递归返回后,不选取当前元素再向下递归。(此处就实现了回溯)