package com.wsq.huishuo;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CombinationSum {
List<List<Integer>> ans = new ArrayList<>();
List<Integer> targetList = new ArrayList<>();
public List<List<Integer>> combinationSum(int[] candidates, int target) {
if(candidates.length == 0) {
return ans;
}
Arrays.sort(candidates);
findTargetList(candidates, 0, target);
return ans;
}
private void findTargetList(int[] candidates, int pos, int target) {
for(int i = pos; i < candidates.length; ++i) {
int tmpN = candidates[i];
if(tmpN == target) {
List tmpList = new ArrayList(targetList);
tmpList.add(tmpN);
ans.add(tmpList);
break;
}else if(tmpN < target) {
targetList.add(tmpN);
findTargetList(candidates, i, target - tmpN);
targetList.remove(targetList.size() - 1);
}else {
break;
}
}
}
public static void main(String[] args) {
int[] candidates = {2,3,6,7};
int target = 7;
CombinationSum cs = new CombinationSum();
cs.combinationSum(candidates, target);
}
}