Print all possible subsets of a set in C++
In this tutorial, we will learn how to print all the possible subsets of a set in C++. Now, before moving to the problem which is to print all the possible subsets of a set in C++. Let us understand it with an example, where there were 3 sets {0,1,2} (which means n=3). Hence, the total number of subsets are:
0 1 0 1 2 0 2 1 2 0 1 2
Now, let us understand it more deeply upon the possible subsets. How to get them logically?
As we all know that the total possible subsets in a given set are 2 power n(2^n). It is all based on the counter which is basically of type binary. That is let us understand it for n=3. Where 2 power 3 ( 2^3 ) equals to 8. But, based on our counter(binary) it would be 7 ( 2^n -1 ) where the 000 implies nothing( empty set ).
n=3, sets={1,2,3}
BINARY SUBSETS IMPLIES
REPRESENTATION
000 {} Nothing(empty set)
001 {1} 1 is set, one set is 1.
010 {2} 2 is set, another set is 2.
011 {1,2} likewise 1,2 is also an set.
100 {3} 3 is also an set.
101 {1,3} 1,3 is also an set.
110 {2,3} 2,3 is also an set.
111 {1,2,3} All the bits are set i.e., 1,2,3.
Lets us construct code based upon the above logic. Its program is :
#include <bits/stdc++.h>
using namespace std;
void possiblesets(int a[],int num)
{
// loop running till 2^num - 1
for (int i = 0; i < pow(2,num); i++)
{
//the jth loop will run till num - 1 times
for (int j = 0; j < num; j++)
{
// the actual logic is checked here and then gets
// printed on the console if successfull
if ((i & (1 << j)) > 0)
cout << a[j] << " ";
}
cout << "\n";
}
}
int main()
{
int num;
cout << "Enter the number of elements in the set:\n";
cin >> num;
int a[num];
cout << "Enter the elements of the set:\n";
for(int i=0;i<num;i++)
cin >> a[i];
possiblesets(a,num); //this function prints all the possible subsets
return 0;
}The above program generates the outputs as :
1. Enter the number of elements in the set: 2 Enter the elements of the set: 10 20 10 20 10 20 2. Enter the number of elements in the set: 4 Enter the elements of the set: 0 1 2 3 0 1 0 1 2 0 2 1 2 0 1 2 3 0 3 1 3 0 1 3 2 3 0 2 3 1 2 3 0 1 2 3
Hope you like that guys. Happy learning!
Recommended articles:
C++ program to Count total number of words in a text file
Find substring from text file with C++
Leave a Reply