package leetcode;
import java.util.ArrayList;
import java.util.List;
public class demo_77 {
public List<List<Integer>> combine(int n, int k) {
List<List<Integer>> list=new ArrayList<List<Integer>>();
backtrack(list,new ArrayList<Integer>(), 1, n, k);
System.out.println(list);
return list;
}
//回溯法,让下一次开始的位置是上一次的下一个位置
public void backtrack(List<List<Integer>> list,List<Integer> li,int j,int n,int k) {
if(li.size()==k) {
list.add(new ArrayList<Integer>(li));
}
else {
for(int i=j;i<=n;i++) {
if(li.size()<k) {
li.add(i);
backtrack(list, li, i+1, n, k);
li.remove(li.size()-1);
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
demo_77 d77=new demo_77();
d77.combine(4, 2);
}
}