二つの整数nとkが与えられ、nは1 ...のうちk個のすべての可能な組み合わせを返します。
例:
入力:N = 4、K = 2
出力
:
[ [2,4]、
[3,4]、
[2,3]、
[1,2]、
[1,3]、
[1,4]、
]
func combine(n int, k int) [][]int {
if n <= 0 || n < k {
return [][]int{}
}
res := [][]int{}
graph := make([]int, n)
for i := range graph {
graph[i] = i + 1
}
dfs(graph, k, 0, []int{}, &res)
return res
}
func dfs(graph []int, target int, index int, path []int, paths *[][]int) {
if len(path) == target {
tmp := make([]int, target)
copy(tmp, path)
*paths = append(*paths, tmp)
return
}
for i, v := range graph {
if i < index {
continue
}
fmt.Println(path, append(path, v))
dfs(graph, target, index+1, append(path, v), paths)
index++
}
}```