详细思路
枚举每个数,要这个数,或者不要这个数,每一次都要放进ans,如果到了最大的,要了后就返回,begin+1防止只是交换和重复拿一个数 精确定义 beginclass Solution { public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>>ans; vector<int>ans1; dfs(0,ans,ans1,nums); return ans; } void dfs(int begin,vector<vector<int>>&ans,vector<int>&ans1,vector<int>&nums){ ans.push_back(ans1); if(ans1.size()==nums.size())return ; for(int i=begin;i<nums.size();i++){ ans1.push_back(nums[i]); dfs(i+1,ans,ans1,nums); ans1.pop_back(); } } };踩过的坑 dfs(i+1,ans,ans1,nums); begin从i+1开始,只能向右