题目描述
输出n个元素集合的幂集
eg: S = {a, b, c}
output: {(), (a), (b), (c), (a b), (a c), (b c), (a b c)}
算法思想
同数据结构作业(1)第二份代码, 不再赘述
代码实现
#include<iostream>
#include<vector>
using namespace std;
vector<bool>aux;
void powerset(char* set, int k, int n)
{
if (k == n)
{
cout << "(";
for (int i = 0; i < n; ++i)
{
if (aux[i])
{
cout << set[i] << " ";
}
}
cout << "), ";
}
else
{
aux[k] = false;
powerset(set, k + 1, n);
aux[k] = true;
powerset(set, k + 1, n);
}
}
int main()
{
int n; cin >> n;
aux.resize(n);
char* set = new char[n];
cout << "input the element: ";
for (int i = 0; i < n; ++i)
{
cin >> set[i];
}
cout << "the powerset: {";
powerset(set, 0, n);
cout << "}";
}
|