public class Combinations
{
public Combinations(){}
public List<List<Integer>> combine(int n, int k)
{
List<List<Integer>> result= new ArrayList<List<Integer>>();
List<Integer> temp= new ArrayList<Integer>();
dfs(n, k, 1, result, temp);
return result;
}
private void dfs(int n, int k, int next,
List<List<Integer>> result, List<Integer> temp)
{
if(temp.size() == k)
{result.add(new ArrayList(temp));return;}
else
{
for(int i=next;i<n+1;i++)
{
temp.add(i);
dfs(n, k, i+1, result, temp);
temp.remove(temp.size()-1);
}
}
}
}
采用深度优先搜索的思想