#include <iostream>
#include <vector>
void GetPowerSet(int i, std::vector<int> & vecA, std::vector<int> & vecB);
int main()
{
std::vector<int> vecA;
std::vector<int> vecB;
int n = 4;
for (int i=1; i<n; ++i)
{
vecA.push_back(i);
}
GetPowerSet(0, vecA, vecB);
return 0;
}
void GetPowerSet(int i, std::vector<int> & vecA, std::vector<int> & vecB)
{if (i >= vecA.size())
{
if (vecB.empty())
std::cout << "null set" << std::endl;
else
{
for (int j = 0; j<vecB.size(); ++j)
{
std::cout << vecB[j] << ", ";
}
std::cout << std::endl;
}
}
else
{
vecB.push_back(vecA[i]);
GetPowerSet(i+1, vecA, vecB);
vecB.pop_back();
GetPowerSet(i+1, vecA, vecB);
}
}