Generating all subsequence using Bit Masking in C++

 Generating all subsequence using Bit Masking in C++

 Here is the code 

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

vector<string>res;

void helper(vector<char>s,int i){
    int j=0;
    string ans="";
    while(i>0){
        int last_bit=(i & 1);
        if(last_bit)ans+=s[j];
        j++;
        i=(i>>1);
    }
    res.push_back(ans);
}

void generateAllSubsequence(vector<char>s){
    int n=s.size();

    for(int i=0; i<(1<<n); i++){
        helper(s,i);
    }
}


int main(){
    vector<char>v={'r','a','u','n','i','t'};
    generateAllSubsequence(v);
    for(int i=0; i<res.size(); i++)cout<<i<<" "<<res[i]<<endl;


    return 0;
}

Here is the Output

1 r
2 a
3 ra
4 u
5 ru
6 au
7 rau
8 n
9 rn
10 an
11 ran
12 un
13 run
14 aun
15 raun
16 i
17 ri
18 ai
19 rai
20 ui
21 rui
22 aui
23 raui
24 ni
25 rni
26 ani
27 rani
28 uni
29 runi
30 auni
31 rauni
32 t
33 rt
34 at
35 rat
36 ut
37 rut
38 aut
39 raut
40 nt
41 rnt
42 ant
43 rant
44 unt
45 runt
46 aunt
47 raunt
48 it
49 rit
50 ait
51 rait
52 uit
53 ruit
54 auit
55 rauit
56 nit
57 rnit
58 anit
59 ranit
60 unit
61 runit
62 aunit
63 raunit

Post a Comment

0 Comments