leetcode: Combination Sum

来源:互联网 发布:观网络知识防诈骗有感 编辑:程序博客网 时间:2024/06/06 01:15

类似8皇后的回溯法,要求输出结果排序,所以事先对数组排序就行

class Solution {public:    vector< vector< int> > res;    vector<vector<int> > combinationSum(vector<int> &candidates, int target) {        vector< int> cur;        sort( candidates.begin(), candidates.end());        _combinationSum( candidates, cur, 0, target, 0);        return res;    }    void _combinationSum( vector< int> &candidates, vector< int> & cur, int pos, int target, int cur_sum){        if( cur_sum == target){            res.push_back(cur);            return;        }        for( int i = pos; i < candidates.size(); ++i){            if( candidates[i] + cur_sum > target)                break;//因为前面对数组排序了这里就可以改成break,不然是continue            vector< int> tmp = cur;            tmp.push_back(candidates[i]);            _combinationSum( candidates, tmp, i, target, cur_sum+candidates[i]);        }    }};


0 0
原创粉丝点击