Python Program
def find_subsets_with_sum(nums, target_sum): """ Generate all subsets of 'nums' that sum to 'target_sum'. Parameters: nums (list): List of integers to form subsets from. target_sum (int): The target sum for the subsets. Returns: list: A list of lists, where each list is a subset summing to 'target_sum'. """ result = [] def backtrack(start, current_subset, current_sum): # If the current sum is equal to the target sum, we found a valid subset if current_sum == target_sum: result.append(current_subset.copy()) return # If the current sum exceeds the target, no need to continue if current_sum > target_sum: return # Iterate through the numbers, starting from 'start' index for i in range(start, len(nums)): current_subset.append(nums[i]) # Include nums[i] in the subset backtrack(i + 1, current_subset, current_sum + nums[i]) # Recur with updated values current_subset.pop() # Backtrack and remove the last element added backtrack(0, [], 0) return result # Example usage if __name__ == "__main__": numbers = [2, 4, 6, 3] target = 6 subsets = find_subsets_with_sum(numbers, target) print("Subsets that sum to", target, ":", subsets)
Program Explanation
Function: find_subsets_with_sum
This function takes a list of integers and a target sum, and it returns all subsets of the integers that add up to the target sum.
Parameters:
- nums (list): A list of integers from which to form subsets.
- target_sum (int): The desired sum for the subsets.
Returns:
Returns a list of lists, where each inner list is a subset that sums to target_sum
.
Backtracking Function: backtrack
The backtrack
function is a recursive helper function that builds subsets:
- start: The index to start from in the original list.
- current_subset: The current subset being constructed.
- current_sum: The sum of the current subset.
It works by exploring all possible combinations of the numbers. If the current_sum
equals the target_sum
, it adds the current_subset
to the result list. If the current_sum
exceeds the target_sum
, it stops exploring further down that path.
Example Usage
The program includes an example usage where the list [2, 4, 6, 3]
is passed along with a target sum of 6
. The output will be all subsets of the list that sum to 6.