#include using namespace std; class Solution { public: vector> combinationSum2(vector& candidates, int target) { vector> result; sort(candidates.begin(), candidates.end()); function, int)> recursive = [&](int target, vector chosen, int startIndex) { if (target == 0) { result.emplace_back(chosen); return; } for (int i = startIndex; i < candidates.size(); i++) { int x = candidates[i]; if (i > startIndex && x == candidates[i - 1]) { continue; } if (target < x) return; chosen.emplace_back(x); recursive(target - x, chosen, i + 1); chosen.pop_back(); } }; recursive(target, {}, 0); return result; } }; int main() { vector v{10, 1, 2, 7, 6, 1, 5}; Solution().combinationSum2(v, 8); return 0; }