diff --git a/Generation_of_Subsets_using_Recursion_and_Backtracking.cpp b/Generation_of_Subsets_using_Recursion_and_Backtracking.cpp new file mode 100644 index 0000000..3184e57 --- /dev/null +++ b/Generation_of_Subsets_using_Recursion_and_Backtracking.cpp @@ -0,0 +1,37 @@ +#include +#include +using namespace std; + +vector > allSubsets; + +void generate(vector &subset, int i, vector &nums){ + if(i == nums.size()){ + allSubsets.push_back(subset); + return; + } + + // ith element not in subset + generate(subset, i+1, nums); + + // ith element in subset + subset.push_back(nums[i]); + generate(subset, i+1, nums); + subset.pop_back(); +} + +int main(){ + int n; + cin >> n; + vector nums(n); + for(int i = 0 ; i < n; ++i){ + cin >> nums[i]; + } + vector empty; + generate(empty, 0, nums); + for(auto subset : subsets){ + for(auto ele : subset){ + cout << ele << " "; + } + cout << endl; + } +}