集合S的幂集 P(S) 是S所有的子集. 例如 S = {a, b, c} 则它的幂集就是 P(s) = {{}, {a}, {b}, {c}, {a,b}, {a, c}, {b, c}, {a, b, c}}. 其中{}表示空集.
#include <stdio.h>
#include <string.h>
#include <string>
#include <algorithm>
using namespace std;
#include <vector>
#include <iostream>
const int maxn = 22;
char a[maxn];
vector<string> s;//用来装所有子集的容器
int length;
void recursion(vector<string> &s, int n)
{
if (n == 0)
{
s.push_back("");
return;
}
else
{
recursion(s, n - 1);
length = s.size();
//while (length--)
for(int i=0;i<length;i++)
{
vector<string>::iterator it = s.begin()+i;
string s1;
s1 = *it + a[n];
s.push_back(s1);
}
return;
}
}
int n;//必须是全局变量
int main()
{
scanf("%d", &n);
getchar();
for (int i = 1; i <= n; i++)
{
scanf("%c", a+i);
getchar();
}
recursion(s, n);
cout << '{';
for (vector<string>::iterator it = s.begin(); it != s.end(); it++)
cout <<'('<< *it<<')';
cout << '}';
return 0;
}