From 71b174dbf3bacf5d6d401ebf4cdfa1f9ba749c8e Mon Sep 17 00:00:00 2001 From: airwaks <114548361+airwakz@users.noreply.github.com> Date: Fri, 13 Oct 2023 21:52:41 +0530 Subject: [PATCH 1/2] Update subset_generation.py --- dynamic_programming/subset_generation.py | 34 ++++++++---------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/dynamic_programming/subset_generation.py b/dynamic_programming/subset_generation.py index 819fd8106def..96d450b2232f 100644 --- a/dynamic_programming/subset_generation.py +++ b/dynamic_programming/subset_generation.py @@ -1,8 +1,5 @@ -# 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 @@ -11,34 +8,25 @@ def combination_util(arr, n, r, index, data, i): r ---> Size of a combination to be printed """ if index == r: - for j in range(r): - print(data[j], end=" ") - print(" ") + # Instead of printing, append the combination to the list + result.append(tuple(data[:r])) return - # When no more elements are there to put in data[] + # 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() - 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[]' + result = [] # Initialize an empty list to store the combinations combination_util(arr, n, r, 0, data, 0) + return result # Return the list of tuples - -if __name__ == "__main__": - # Driver code to check the function above +if __name__ == "__main": 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) +#The Code is contributed by Airwakz From 2a4ab5e42b53efe68bcee53a64070cf678a62d38 Mon Sep 17 00:00:00 2001 From: airwaks <114548361+airwakz@users.noreply.github.com> Date: Fri, 13 Oct 2023 22:04:35 +0530 Subject: [PATCH 2/2] Update subset_generation.py --- dynamic_programming/subset_generation.py | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/dynamic_programming/subset_generation.py b/dynamic_programming/subset_generation.py index 96d450b2232f..c5d7b5cc7143 100644 --- a/dynamic_programming/subset_generation.py +++ b/dynamic_programming/subset_generation.py @@ -1,32 +1,21 @@ -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: - # Instead of printing, append the combination to the list - result.append(tuple(data[:r])) + 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 data[index] = arr[i] - combination_util(arr, n, r, index + 1, data, i + 1) - combination_util(arr, n, r, index, data, i + 1) + 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): data = [0] * r result = [] # Initialize an empty list to store the combinations - combination_util(arr, n, r, 0, data, 0) + combination_util(arr, n, r, 0, data, 0, result) return result # Return the list of tuples -if __name__ == "__main": +if __name__ == "__main__": arr = [10, 20, 30, 40, 50] combinations = print_combination(arr, len(arr), 3) for combo in combinations: print(combo) -#The Code is contributed by Airwakz