1. 程式人生 > >LeetCode-40. 組合總和 II

LeetCode-40. 組合總和 II

題目地址:https://leetcode-cn.com/problems/combination-sum-ii/
思路:dfs,排序剪枝
AC程式碼:

class Solution {
public:
    vector<vector<int>>ans;
    vector<int>res;
    vector<int>sum;
    void solve(vector<int>& candidates, int target,int k){
        if(target==0){
            ans.push_back(res);
            return;
        }
        int n = candidates.size();
        for(int i=k+1;i<n;i++){
            if(i!=k+1 && candidates[i] == candidates[i-1])
                continue;
            if(target>=candidates[i]){
                res.push_back(candidates[i]);
                solve(candidates,target-candidates[i],i);
                res.pop_back();
            }else
                return;
        }
    }
    vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
        sort(candidates.begin(),candidates.end());
        solve(candidates,target,-1);
        return ans;
    }
};