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)