How to get all possible unique subsets without duplicates from an array of unique numbers in C++

1 Answer

0 votes
#include <iostream>
#include <vector>

void allPossibleSubsets(std::vector<int>& nums, int start, std::vector<int>& currentSubset, 
                        std::vector<std::vector<int>>& result) {
    result.push_back(currentSubset); // Add the current subset to the result
    
    for (int i = start; i < nums.size(); ++i) {
        currentSubset.push_back(nums[i]); // Include nums[i] in the subset
        allPossibleSubsets(nums, i + 1, currentSubset, result); // Recurse with the next index
        currentSubset.pop_back(); // remove the last element
    }
}

std::vector<std::vector<int>> subsets(std::vector<int>& nums) {
    std::vector<std::vector<int>> result;
    std::vector<int> currentSubset;

    allPossibleSubsets(nums, 0, currentSubset, result);
    
    return result;
}

int main() {
    std::vector<int> nums = {1, 2, 3}; // Example input
    std::vector<std::vector<int>> result = subsets(nums);

    std::cout << "All unique subsets:\n";
    for (const auto& subset : result) {
        std::cout << "[ ";
        for (int num : subset) {
            std::cout << num << " ";
        }
        std::cout << "]\n";
    }
}


 
/*
run:
 
All unique subsets:
[ ]
[ 1 ]
[ 1 2 ]
[ 1 2 3 ]
[ 1 3 ]
[ 2 ]
[ 2 3 ]
[ 3 ]

*/

 



answered Jul 10, 2025 by avibootz
...