题目
dfs+回溯
class Solution {
public List<List<Integer>> combinationSum3(int k, int n) {
int[] num = new int[]{1,2,3,4,5,6,7,8,9};
List<List<Integer>> res = new ArrayList<>();
if(k==0 || n==0) return res;
dfs(res,new ArrayList<>(),num,k,n,0);
return res;
}
public void dfs(List<List<Integer>> res,List<Integer> list,int[] num,int k,int n,int pos){
if(n<0) return;
if(k==0 && n==0){
res.add(new ArrayList<>(list));
}
for(int i=pos;i<num.length;i++){
if(num[i]>n) break;
list.add(num[i]);
dfs(res,list,num,k-1,n-num[i],i+1);
list.remove(list.size()-1);
}
}
}