码迷,mamicode.com
首页 > 其他好文 > 详细

回溯---组合

时间:2019-07-01 14:16:43      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:ret   res   ack   art   code   com   个数   return   --   

组合

77. Combinations (Medium)

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);
    }
}

回溯---组合

标签:ret   res   ack   art   code   com   个数   return   --   

原文地址:https://www.cnblogs.com/yjxyy/p/11113338.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!