diff --git a/dynamic_programming/subset_generation.py b/dynamic_programming/subset_generation.py index 819fd8106def..c5d7b5cc7143 100644 --- a/dynamic_programming/subset_generation.py +++ b/dynamic_programming/subset_generation.py @@ -1,44 +1,21 @@ -# Print all subset combinations of n element in given set of r element. - - -def combination_util(arr, n, r, index, data, i): - """ - Current combination is ready to be printed, print it - arr[] ---> Input Array - data[] ---> Temporary array to store current combination - start & end ---> Staring and Ending indexes in arr[] - index ---> Current index in data[] - r ---> Size of a combination to be printed - """ +def combination_util(arr, n, r, index, data, i, result): if index == r: - for j in range(r): - print(data[j], end=" ") - print(" ") + result.append(tuple(data[:r])) # Append the combination to the result list return - # When no more elements are there to put in data[] if i >= n: return - # current is included, put next at next location data[index] = arr[i] - combination_util(arr, n, r, index + 1, data, i + 1) - # current is excluded, replace it with - # next (Note that i+1 is passed, but - # index is not changed) - combination_util(arr, n, r, index, data, i + 1) - # The main function that prints all combinations - # of size r in arr[] of size n. This function - # mainly uses combinationUtil() - + combination_util(arr, n, r, index + 1, data, i + 1, result) + combination_util(arr, n, r, index, data, i + 1, result) def print_combination(arr, n, r): - # A temporary array to store all combination one by one data = [0] * r - # Print all combination using temporary array 'data[]' - combination_util(arr, n, r, 0, data, 0) - + result = [] # Initialize an empty list to store the combinations + combination_util(arr, n, r, 0, data, 0, result) + return result # Return the list of tuples if __name__ == "__main__": - # Driver code to check the function above arr = [10, 20, 30, 40, 50] - print_combination(arr, len(arr), 3) - # This code is contributed by Ambuj sahu + combinations = print_combination(arr, len(arr), 3) + for combo in combinations: + print(combo)