输入一组序列,求所有的子集,和这一题一样http://www.cnblogs.com/0summer/p/5824212.html
这是本题输入的序列中可能有重复的元素,没有关系,上一题我已经考虑过这个问题了,就是树的每一层相同的元素只搜索一次,看注释
选择:dfs+回溯
去重:树的每一层相同的元素只搜索一次
树的每一层其实就是一层递归,然后在这层递归中可能选择后面的元素用for循环来实现
1 class Solution { 2 public: 3 void dfs(vector a,int i,vector> &v,vector vv,int k){ 4 if(vv.size()==k){ 5 v.push_back(vv); 6 return; 7 } 8 for(int j=i+1;j