#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;
}