首页 > 其他 > 详细

回溯---组合求和

时间:2019-07-01 16:19:48      阅读:86      评论:0      收藏:0      [点我收藏+]

组合求和

39. Combination Sum (Medium)

given candidate set [2, 3, 6, 7] and target 7,
A solution set is:
[[7],[2, 2, 3]]

题目描述:

??给定一个目标值,和一集合,找出集合中所有的组合序列(序列中元素的和为target)

思路分析:

??求排列组合问题,使用回溯法。

代码:

public List<List<Integer>>combinationSum(int[]candidates,int target){
    List<List<Integer>>res=new ArrayList<>();
    List<Integer>list=new ArrayList<>();
    if(candidates==null||candidates.length==0)
        return res;
    Arrays.sort(candidates); //进行排序,方便后面进行剪枝
    backtracking(candidates,0,0,res,list,target);
    return res;
}
public void backtracking(int[]candidates,int start,int sum,List<List<Integer>>res,List<Integer>list ,int target){
    if(sum==target){
        res.add(new ArrayList<>(list));
        return ;
    }
    for(int i=start;i<candidates.length;i++){
        if(sum+candidates[i]<=target){
            list.add(candidates[i]);
            backtracking(candidates,i,sum+candidates,res,list,target);//start更新为i,表示可以重复取同一个元素
            list.remove(list.size()-1);
        }else{
            break;
        }
    }
}

回溯---组合求和

原文:https://www.cnblogs.com/yjxyy/p/11114075.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!