加起来和为目标值的组合(二)
问题简述
给出一组候选数 c 和一个目标数 t ,找出候选数中起来和等于 t 的所有组合。
c 中的每个数字在一个组合中只能使用一次。
注意:
1. 题目中所有的数字(包括目标数 t )都是正整数
2. 组合中的数字要按非递减排序
3. 结果中不能包含重复的组合
4. 组合之间的排序按照索引从小到大依次比较,小的排在前面,如果索引相同的情况下数值相同,则比较下一个索引。
思路:DFS回溯
定义
dfs(start, rest)
表示从start
开始遍历剩下的元素,剩余目标和rest
;剪枝要点(详见代码);
先对
arr
排序;当前层跳过重复值,即
arr[i] == arr[i-1]
时continue
;遍历当前层元素时,若
rest < arr[i]
直接break
;
Last updated