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); } }
原文:https://www.cnblogs.com/Yshun/p/14877927.html