如何利用網(wǎng)絡(luò)廣告提升營銷競爭力班級優(yōu)化大師客服電話
1. 題意
給定一個數(shù)組,和一個目標(biāo)值;求得所有數(shù)組中所有和為目標(biāo)值的元素序列。
組合總數(shù)
2. 題解
回溯列舉每一個可能的序列,注意去重。
2.1 我的解法
class Solution {
public:void gen(vector<vector<int>> &ans,const vector<int> &candidates, vector<int> &seq, int target){if (target == 0) {ans.push_back(seq);return ;}if ( target < 0)return ;int sz = candidates.size();for ( int i = 0; i < sz; ++i) {if ( !seq.empty() &&candidates[i] < seq[seq.size() - 1])continue;seq.push_back(candidates[i]);gen(ans, candidates, seq, target - candidates[i]);seq.pop_back();}}vector<vector<int>> combinationSum(vector<int>& candidates, int target) {vector<vector<int>> ans;vector<int> one;sort(candidates.begin(), candidates.end());gen(ans, candidates, one, target);return ans;}
};
2.2 另一種可能
class Solution {
public:void gen(vector<vector<int>> &ans,const vector<int> &candidates, vector<int> &seq, int idx, int target){if (target == 0) {ans.push_back(seq);return ;}if ( target < 0)return ;int sz = candidates.size();for ( int i = idx; i < sz; ++i) {seq.push_back(candidates[i]);gen(ans, candidates, seq, i, target - candidates[i]);seq.pop_back();}}vector<vector<int>> combinationSum(vector<int>& candidates, int target) {vector<vector<int>> ans;vector<int> one;sort(candidates.begin(), candidates.end());gen(ans, candidates, one, 0, target);return ans;}
};