题目
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例1
输入:
nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
解法:
- 采用回溯的算法
- 每次的结果都可以
- 回溯的时候需要带着下标
代码
#include <stdio.h>
#include <vector>
#include <iostream>
using namespace std;
class Solution {
public:
vector<int> tmp;
vector<vector<int>> ans;
vector<vector<int>> subsets(vector<int>& nums) {
tmp.clear();
ans.clear();
dfs(nums,0);
return ans;
}
void dfs(vector<int>& nums,int nowid){
ans.push_back(tmp);
for(int i=nowid;i<nums.size();i++){
tmp.push_back(nums[i]);
dfs(nums,i+1);
tmp.pop_back();
}
}
};
int main()
{
vector<int> nums={1,2,3};
Solution s;
vector<vector<int>> ans = s.subsets(nums);
for(auto x:ans){
for(auto y:x){
cout<<y<<" ";
}
cout<<endl;
}
return 0;
}
今天也是爱zz的一天哦!