website/content/ChapterFour/0200~0299/0216.Combination-Sum-III.md
Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.
Note:
Example 1:
Input: k = 3, n = 7
Output: [[1,2,4]]
Example 2:
Input: k = 3, n = 9
Output: [[1,2,6], [1,3,5], [2,3,4]]
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。
说明:
package leetcode
func combinationSum3(k int, n int) [][]int {
if k == 0 {
return [][]int{}
}
c, res := []int{}, [][]int{}
findcombinationSum3(k, n, 1, c, &res)
return res
}
func findcombinationSum3(k, target, index int, c []int, res *[][]int) {
if target == 0 {
if len(c) == k {
b := make([]int, len(c))
copy(b, c)
*res = append(*res, b)
}
return
}
for i := index; i < 10; i++ {
if target >= i {
c = append(c, i)
findcombinationSum3(k, target-i, i+1, c, res)
c = c[:len(c)-1]
}
}
}