1. 程式人生 > >Leetcode:39. 組合總和II

Leetcode:39. 組合總和II

class Solution { public:     vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {         sort(candidates.begin(), candidates.end());         data = candidates;         vector<int> road;//儲存訪問過的值,初始值為空         DFS(0, target, road);         return res;     }     void DFS(int pos, int target, vector<int> road) {         if (target == 0) {             res.push_back(road);             return;         }         for (int i = pos; i<int(data.size()); i++) {             if (data[i] > target) return;             target -= data[i];             int pre = road.size();             road.push_back(data[i]);             DFS(i + 1, target, road);             road.erase(road.begin() + pre, road.end());             target += data[i];             while ((int(data.size())>(i+1))&&(data[i] == data[i + 1])) {                 i++;             }         }     } private:     vector<int> data;     vector<vector<int>> res; };