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

加起来和为目标值的组合

http://www.nowcoder.com/practice/75e6cd5b85ab41c6a7c43359a74e869a

class Solution {
public:
    void dfs(vector<vector<int >>& res, vector<int>& ans, vector<int>& num, vector<bool>& used, int target, int selSum, int startIndex) {
        if(selSum == target) {
            res.push_back(ans);
            return;
        }
        for(int i = startIndex; i < num.size(); i++) { // i从startIndex开始遍历,保证数组从小到大按照顺序遍历
            if(!used[i] && selSum + num[i] <= target) {
                if(i > 0 && num[i]==num[i-1] && used[i-1]==false) // 剪枝掉相同数组
                   continue;
                used[i] = true;
                ans.push_back(num[i]);
                dfs(res, ans, num, used, target, selSum + num[i], i + 1);
                used[i] = false;
                ans.pop_back();
            }
        }
    }
    vector<vector<int> > combinationSum2(vector<int> &num, int target) {
        sort(num.begin(), num.end());
        vector<vector<int>> res;
        vector<int> ans;
        vector<bool> used(num.size(), false);
        int selSum = 0;
        int startIndex = 0;
        dfs(res, ans, num, used, target, selSum, startIndex);
        return res;
    }
};
全部评论

相关推荐

测试糕手手:社会第一课,随便吹牛逼,直接说四个月,别老实。老实人只会被欺负
点赞 评论 收藏
分享
06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务