1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class Solution { private: int N; std::vector<vector<int>> ans; std::vector<int> cur; void dfs(int idx, vector<int>& nums) { if (idx == N) { ans.push_back(cur); return; } cur.push_back(nums[idx]); dfs(idx + 1, nums); cur.pop_back(); dfs(idx + 1, nums); } public: vector<vector<int>> subsets(vector<int>& nums) { N = nums.size(); cur.clear(); dfs(0, nums); return ans; } }; |