19.组合的总数-回溯法
package main
// @solution-sync:begin
func combinationSum(candidates []int, target int) [][]int {
result := make([][]int, 0)
var dfs func(start int, temp []int, sum int)
dfs = func(start int, temp []int, sum int) {
if sum >= target {
if sum == target {
newTemp := make([]int, len(temp))
copy(newTemp, temp)
result = append(result, newTemp)
}
return
}
for i := start; i < len(candidates); i++ {
temp = append(temp, candidates[i])
dfs(i, temp, sum+candidates[i])
temp = temp[:len(temp)-1]
}
}
dfs(0, []int{}, 0)
return result
}
Last updated