整数 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}