回溯---组合
Posted yjxyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回溯---组合相关的知识,希望对你有一定的参考价值。
组合
If n = 4 and k = 2, a solution is:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
题目描述:
??给两个数字n和k,输出由k个数组成的所有组合,数的范围在1-n,且形式如上例所示;
思路分析:
??排列问题,使用回溯方法解决
代码:
public List<List<Integer>>combine(int n,int k)
List<List<Integer>>res=new ArrayList<>();
if(n<k)
return res;
List<Integer>list=new ArrayList<>();
backtracking(res,list,1,n,k);
return res;
public void backtracking(List<List<Integer>>res,List<Integer>list,int start,int n,int k)
if(k==0)
res.add(new ArrayList<>(list));
return;
for(int i=start;i<=n-k+1;i++)//进行剪枝,满足序列中的元素递增
list.add(i);
backtracking(res,list,i+1,n,k-1);
list.remove(list.size()-1);
以上是关于回溯---组合的主要内容,如果未能解决你的问题,请参考以下文章