Problem
Get all the combination of the number whose sum is the given value. Each number can be selected more than once.
Algorithm
DFS.
Code
class Solution:
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
ans = []
buf = []
def dfs(i, n, add, tar):
if add == tar:
ans.append(buf.copy())
return
if i >= n:
return
dfs(i+1, n, add, tar)
if add + candidates[i] <= tar:
buf.append(candidates[i])
dfs(i, n, add+candidates[i], tar)
buf.pop()
dfs(0, len(candidates), 0, target)
return ans