题解 | #加起来和为目标值的组合#

加起来和为目标值的组合

http://www.nowcoder.com/practice/172e6420abf84c11840ed6b36a48f8cd

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param target int整型 
     * @param nums int整型vector 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > combinationCount(int target, vector<int>& nums) {
        vector<vector<int>> res;
        vector<int> path;
                //剪枝,需要排序
        sort(nums.begin(),nums.end());
        dfs(res, path, 0, 0, target, nums);
        return res;
        // write code here
    }
    void dfs(vector<vector<int>>& res, vector<int>& path, int index,
            int cur_sum, int target, vector<int>& nums){
        if(cur_sum==target){
            res.push_back(path);
            return;
        }//剪枝需要排序
        for(int i=index; i<nums.size()&& cur_sum+nums[i]<=target; i++){
            path.push_back(nums[i]);
            cur_sum += nums[i];
            dfs(res, path, i, cur_sum, target, nums);
            cur_sum -= nums[i];
            path.pop_back();
            
        }
    }
};
https://www.programmercarl.com/0039.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C.html#%E5%9B%9E%E6%BA%AF%E4%B8%89%E9%83%A8%E6%9B%B2
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-29 12:19
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务