我正在尝试查找给定向量的超集。我通过递归来做到这一点。迭代地,我删除一个值,然后用新集合调用函数。我得到了所有的集合,但它们是重复的。例如,对于 5 个元素,应该有 32 到 31 个子集,而我得到大约 206 个子集。这是我的代码
using namespace std;
int iter = 1;
void display(vector<int> &v)
{
cout<<"case#"<<iter++<<": ";
vector<int>::iterator i;
for(i=v.begin();i!=v.end();i++)
cout<<*i<<" ";
cout<<endl;
}
void gen( vector<int> &v)
{
if(v.size()==0) return;
display(v);
vector<int>::iterator j,i;
for(i=v.begin();i!=v.end();i++)
{
vector<int> t(v);
j = find(t.begin(),t.end(),*i);
t.erase(j);
gen(t);
}
}