📢 Too many exams? Don’t know which one suits you best? Book Your Free Expert 👉 call Now!


    Question

    In a recursive subset_sum function, backtrack(index,

    current_subset, current_sum), to explore the option of *including* the current element arr[index], which recursive call is correct? def subset_sum(arr, target):     result = []     def backtrack(start, current_subset, current_sum):         if current_sum == target:             result.append(current_subset[:])             return         if current_sum > target or start == len(arr):             return         # Option 1: Include current element         current_subset.append(arr[start])         backtrack(__________) # Line to complete         current_subset.pop() # Backtrack         # Option 2: Exclude current element         backtrack(start + 1, current_subset, current_sum)     backtrack(0, [], 0)     return result
    A start + 1, current_subset, current_sum Correct Answer Incorrect Answer
    B start + 1, current_subset, current_sum + arr[start] Correct Answer Incorrect Answer
    C start, current_subset, current_sum + arr[start] Correct Answer Incorrect Answer
    D start + 1, current_subset[:], current_sum + arr[start] Correct Answer Incorrect Answer
    E start, current_subset[:], current_sum Correct Answer Incorrect Answer

    Solution

    • Concept: The subset sum problem can be solved using backtracking by exploring two branches at each step: either include the current element or exclude it. • Code Analysis: o The backtrack function takes start (current index), current_subset, and current_sum. o "Option 1: Include current element" means we add arr[start] to current_subset and update current_sum. o The recursive call should then move to the next element (start + 1) and pass the updated current_subset and current_sum. • Explanation of Correct Answer (B): start + 1, current_subset, current_sum + arr[start] o When including arr[start]:  The start index must be incremented to start + 1 to consider the next element in the array.  current_subset is already modified by current_subset.append(arr[start]) before the call, so it's passed as is.  current_sum needs to reflect the addition of arr[start], so it becomes current_sum + arr[start].

    Practice Next
    ask-question