#include<iostream>
#include<string>
#include<vector>
//只有子集需要在每个结点收集结果,其余在叶子结点收集结果
using namespace std;
vector<vector<int>>ans;
vector<int>combine;
void backtracking(int index,vector<int>nums)
{
if (combine.size()==nums.size()+1)
{
return;
}
ans.push_back(combine);
for (int i=index;i<nums.size();i++)
{
combine.push_back(nums.at(i));
backtracking(i+1, nums);
combine.pop_back();
}
}
int main()
{
vector<int>nums = { 1,2,3 };
backtracking(0,nums);
ans.erase(ans.begin());
for (auto& n : ans)
{
for (int i = 0;i < n.size();i++)
cout << n[i];
cout << endl;
}
return 0;
}


