题目
给一个set 和 一个target 。set中元素可以任意数量,加起来得到target的集合。
代码
public class Solution {
public List<List<Integer>> combinationSum(int[] candidates, int target) {
List<List<Integer>> ans = new ArrayList<List<Integer>>();
List<Integer> temp = new ArrayList<Integer>();
int start=0;
Arrays.sort(candidates);
useme(ans,temp,target,start,candidates);
return ans;
}
public void useme(List<List<Integer>> ans , List<Integer> temp, int target,int start,int[] candidates){
if(target == 0){
ans.add(new ArrayList<Integer>(temp));
return;
}
for(int i=start;i<candidates.length;i++){
int cur = candidates[i];
if(target-cur < 0){
return;
}
temp.add(cur);
useme(ans,temp,target-cur,i,candidates);
temp.remove(temp.size()-1);
}
}
}
简单DFS