 # Program to generate all the subsets of an array

## Program to generate all the subsets of an array

Given a list of numbers , write a Program to generate all the subsets of an array.

Sample input:

```3
1 2 3```

sample output:-

```3
2
2 3
1
1 3
1 2
1 2 3```

## Program to generate all the subsets of an array:-

The objective of the code is to generate all the subsets of a list of elements . So we will write Program to generate all the subsets of an array . Code:-

```//Program to print the all subsets

#include<bits/stdc++.h>
using namespace std;

vector<vector<int>> subsets;

// function for print the subsets

void Printsubsets(vector<int > &subset, int i ,vector<int >&nums)
{
if(i==nums.size())
{
subsets.push_back(subset);
return;
}

// ith element in subset
Printsubsets(subset,i+1,nums);

// ith element in subset
subset.push_back(nums[i]);

// call function for next element
Printsubsets(subset,i+1,nums);

// backtrack
subset.pop_back();
}

// Driver function

int main()
{
vector<int> arr,empty;
int n,ele;
cout<<"Enter the number of elements"<<endl;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>ele;
arr.push_back(ele);
}

// calling of function
Printsubsets(empty,0,arr);

// printing of all the subsets
cout<<"Subsets are "<<endl;

for(auto subset : subsets)
{
for(auto ele : subset)
{
cout<<ele<<" ";
}
cout<<endl;
}
return 0;
}
```

Output:-

```Enter the number of elements
3
1 2 3
Subsets are

3
2
2 3
1
1 3
1 2
1 2 3```