我生成子集的方法有什么问题?

时间:2013-03-18 03:18:34

标签: c++ algorithm stack subset

给定n≥0的整数,计算并生成集合{1,2,3,...,n}的所有子集。

我使用堆栈来记录所选的元素。 但是如何使用递归函数来获取它?:

Enter an integer ≥ 0: 3 //After this part
{}
{1}
{2}
{1,2}
{3}
{1,3}
{2,3}
{1,2,3}
Number of subsets = 8 //Till before this part

感谢您的时间。

修改

int subset(int n){
 stack s(n);
 int n = subset(n,s);
 cout << "Number of subsets = " ;
 return n;
}

int subset(int n,stack& s){
 if(n>0)
 {
  s.push(n-1);
  int g = subset(n-1,s);
  s.pop();
  int u = subset(n-1,s);
  return g+u;
 }
}

但仍然不完全存在。什么是错误的暗示?

4的输出将是:

{}
{1}
{2}
{1,2}
{3}
{1,2}
{2,3}
{1,2,3}
{4}
{1,2}
{2,3}
{1,2,3}
{3,4}
{1,2,3}
{2,3,4}
{1,2,3,4}

0 个答案:

没有答案
相关问题