You are on page 1of 2

Experiment-09

Aim: Given an integer array nums of unique elements, return all possible
subsets (the power set). The solution set must not contain duplicate subsets.
Return the solution in any order.

Algorithm:

main function
initialize subset vector: vector<int> subset
initialize result vector: vector<vector<int>> result
call subsetsUtil(nums, result, subset, 0)
return result
subsetsUtil function

res.push_back(subset)
loop for i = index; i < nums.size(); i++
subset.push_back(nums[i])
subsetsUtil(nums, result, subset, i + 1)
subset.pop_back()
return

Code:

#include <iostream>
#include <vector>

using namespace std;

vector<vector<int>> subsets(vector<int>& nums)


{
vector<vector<int>> result;
vector<int> currentSubset;

// Start by adding an empty subset


result.push_back(currentSubset);

for (int num : nums) {


int n = result.size();

for (int i = 0; i < n; ++i) {


currentSubset = result[i];
currentSubset.push_back(num);
result.push_back(currentSubset);
}
}

return result;
}

int main()
{
vector<int> nums = {1,2,2,3};
vector<vector<int>> result = subsets(nums);

// Print the result


for (const vector<int>& subset : result) {
cout << "[";
for (int i = 0; i < subset.size(); ++i) {
cout << subset[i];
if (i < subset.size() - 1) {
cout << ", ";
}
}
cout << "]" << endl;
}

return 0;
}

Output

You might also like