Sort the input array to group identical numbers together.
Define a backtracking function that takes the current combination, the remaining target sum, the current index, and the result list as arguments.
If the remaining sum is zero, add the current combination to the result list.
Iterate over the numbers starting from the current index. For each number:
a. If the number is greater than the remaining sum, break the loop (early stopping).
b. If the current index is greater than the starting index and the number is the same as the previous number, continue to the next iteration to avoid duplicates.
c. Include the number in the current combination and recursively call the backtracking function with the updated parameters.
d. Remove the number from the current combination (backtrack) before moving to the next iteration.
Return the result list after exploring all combinations.