#include <vector>
#include <iostream>
using namespace std;
vector<vector<int>> subsets(vector<int>& vec)
{
vector<vector<int>> res;
int len = vec.size();
int state_number = 1 << len;
for (int i = 0; i < state_number; ++i)
{
vector<int> tmp;
for (int j = 0; j < len; ++j)
{
if ((1 << j) & i)
{
tmp.emplace_back(vec[j]);
}
}
res.emplace_back(tmp);
}
return res;
}
void print_vec(const vector<vector<int>>& vec)
{
for (auto& num_vec : vec)
{
for (auto& num : num_vec)
{
std::cout << num << " ";
}
std::cout << std::endl;
}
std::cout << std::endl << std::endl;
}
int main()
{
vector<int> vec({ 1,2,3,4,5,6,7,8,9,0 });
vector<vector<int>> ans = subsets(vec);
print_vec(ans);
cout << "子集的个数 = " << ans.size() << std::endl;
system("pause");
return 0;
}