Given a set of positive integers, find all its subsets.
Input : 1 2 3 Output : // this space denotes null element. 1 1 2 1 2 3 1 3 2 2 3 3 Input : 1 2 Output : 1 2 1 2
Idea is that if we have n number of elements inside an array, we have exactly two choices for each of the elements. Either we include that element in our subset or we do not include it.
# Python3 program to find all subsets
# by backtracking.
# In the array A at every step we have two
# choices for each element either we can
# ignore the element or we can include the
# element in our subset
def subsetsUtil(A, subset, index):
for i in range(index, len(A)):
# include the A[i] in subset.
# move onto the next element.
subsetsUtil(A,subset, i + 1)
# exclude the A[i] from subset and
# triggers backtracking.
# below function returns the subsets of vector A.
subset = 
# keeps track of current element in vector A
index = 0
subsetsUtil(A, subset, index)
# Driver Code
# find the subsets of below vector.
array = [1, 2, 3]
# res will store all subsets.
# O(2 ^ (number of elements inside array))
# because at every step we have two choices
# either include or ignore.
# This code is contributed by SHUBHAMSINGH8410
1 1 2 1 2 3 1 3 2 2 3 3
Time Complexity : O(2 ^ n)
- Partition an array of non-negative integers into two subsets such that average of both the subsets is equal
- Find all distinct subsets of a given set
- Sudoku | Backtracking-7
- Rat in a Maze | Backtracking-2
- Backtracking | Introduction
- Subset Sum | Backtracking-4
- Magnet Puzzle | Backtracking-9
- Rat in a Maze | Backtracking using Stack
- m Coloring Problem | Backtracking-5
- Hamiltonian Cycle | Backtracking-6
- N Queen Problem | Backtracking-3
- Solving Cryptarithmetic Puzzles | Backtracking-8
- The Knight's tour problem | Backtracking-1
- Word Break Problem using Backtracking
- Top 20 Backtracking Algorithm Interview Questions
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.